在 XAML 中应用值转换器,无需数据绑定

Nic*_*ell 3 c# data-binding wpf xaml valueconverter

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

\n\n

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

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

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

  4. \n
\n\n

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

\n

dec*_*cPL 5

如果您希望仅从 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>
Run Code Online (Sandbox Code Playgroud)

  • 此外,无需使用转换器。只需写入 `StringFormat="c"` (3认同)