WPF值转换器

时间:2012-10-02 13:18:55

标签: c# wpf

我正在制作一个WPF应用程序,我需要一个带有多个绑定路径的值转换器,这可能吗?

到目前为止,它适用于1条路径:

Binding="{Binding Path=Price, Converter={StaticResource vPriceConvertor}}"

我想将Pricediscount提供给转换器,以便他可以计算endprice

3 个答案:

答案 0 :(得分:5)

查看MultiBinding课程。例如:

<TextBlock Name="textBlock" DataContext="{StaticResource myViewModel}">
  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource vPriceConvertor}"
                  ConverterParameter="myParameter">
      <Binding Path="Price"/>
      <Binding Path="Discount"/>
      <!-- Insert other paths here -->
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>

实施IMultiValueConverter而非IValueConverter实际进行转换,因为它支持多个来源。

答案 1 :(得分:5)

值转换器旨在...用于值转换。这就是为什么他们重​​视转换器的原因。

要执行您想要的操作,您应该在视图模型中创建属性EndPrice,并在视图模型中计算其值。为什么要尝试将非UI逻辑引入UI?

答案 2 :(得分:1)

Parys -

您始终可以创建一个包含价格和折扣的集合(在视图模型中),然后将其传递给您的XAML(通过IValueConverter)。

但要重新迭代@Dennis和其他人指出 - 那么你的转换器将具有计算逻辑 - 这是不推荐的。