在XAML中应用值转换器而不进行数据绑定

时间:2014-05-15 14:07:11

标签: c# wpf xaml data-binding valueconverter

我的视图中有一个TextBlock,我希望始终显示数字1,转换为本地货币。 (例如美国1美元,英国1英镑等)。我有一个可以执行此操作的值转换器,但我不知道如何在不从数据绑定中获取数据的情况下将值转换器应用于值1。

我可以想到两个解决方案,但他们每个都有他们的问题,我正在寻找更优雅的东西:

  1. 在我的ViewModel上创建一个属性,该属性只保存并返回值1并绑定到它。然后将我的转换器添加到此绑定。这似乎是倒退,特别是因为这是仅查看代码。

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

  3. 在没有首先创建绑定的情况下,是否有某种方法可以应用转换器?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我有类似的情况,我需要将直接放在xaml中的静态枚举值转换为我的自定义转换器转换而不使用数据绑定。

<Border>
    <Border.Background>
        <Binding Source="{x:Static enumeration:ColorType.Main}"
            Converter="{StaticResource ColorConverter}" />
    </Border.Background>
</Border>