在没有数据绑定的XAML中应用值转换器
本文关键字:应用 转换器 XAML 数据绑定 | 更新日期: 2023-09-27 18:03:45
我的视图中有一个TextBlock,我想始终显示数字1,转换成当地货币。(例如:美元是$1,英国是£1,等等)。我有一个值转换器可以做到这一点,但我不知道如何将值转换器应用到1的值,而不从数据绑定中获取数据。
我可以想到两种解决方案,但它们都有各自的问题,我在寻找更优雅的解决方案:
-
在我的ViewModel上创建一个属性,它只持有并返回值1并绑定到它。然后将我的转换器添加到此绑定。
-
为现有的属性创建一个绑定点,并修改我的转换器以忽略给定给它的值,而是使用参数给它数字1。这对其他程序员来说是不直观的,因为他们会对我为什么在那里绑定不同的属性感到困惑。
是否有一些方法可以在不首先创建绑定的情况下应用转换器?
如果您希望仅从XAML中相对可读,则可以这样做:
<Label>
<Label.Resources>
<system:Int32 x:Key="defaultValue">1</system:Int32>
</Label.Resources>
<Label.Content>
<Binding Source="{StaticResource defaultValue}"
Converter="{StaticResource CurrencyConverter}" />
</Label.Content>
</Label>
我有类似的情况,我需要将直接放在xaml中的静态enum值转换为由我的自定义转换器转换而不使用数据绑定。
<Border>
<Border.Background>
<Binding Source="{x:Static enumeration:ColorType.Main}"
Converter="{StaticResource ColorConverter}" />
</Border.Background>
</Border>