在没有数据绑定的XAML中应用值转换器

本文关键字:应用 转换器 XAML 数据绑定 | 更新日期: 2023-09-27 18:03:45

我的视图中有一个TextBlock,我想始终显示数字1,转换成当地货币。(例如:美元是$1,英国是£1,等等)。我有一个值转换器可以做到这一点,但我不知道如何将值转换器应用到1的值,而不从数据绑定中获取数据。

我可以想到两种解决方案,但它们都有各自的问题,我在寻找更优雅的解决方案:

  1. 在我的ViewModel上创建一个属性,它只持有并返回值1并绑定到它。然后将我的转换器添加到此绑定。

  2. 为现有的属性创建一个绑定点,并修改我的转换器以忽略给定给它的值,而是使用参数给它数字1。这对其他程序员来说是不直观的,因为他们会对我为什么在那里绑定不同的属性感到困惑。

是否有一些方法可以在不首先创建绑定的情况下应用转换器?

在没有数据绑定的XAML中应用值转换器

如果您希望仅从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>