C# 基于WPF中的布尔值将两个不同属性绑定到一个TextBlock

C# 基于WPF中的布尔值将两个不同属性绑定到一个TextBlock,c#,wpf,xaml,binding,C#,Wpf,Xaml,Binding,我有以下问题:我有UserControl,其中DataContext被设置为一个具有两个不同属性的对象(其他属性除外):Price(decimal)和AlternativePrice(string) 在UserControl中,我有TextBlock,我想根据评估AlternativePrice==decimal.Zero设置该Text属性 如果true,Text属性应设置为Text={Binding Price},如果false,则Text={Binding AlternativePrice}

我有以下问题:我有
UserControl
,其中
DataContext
被设置为一个具有两个不同属性的对象(其他属性除外):
Price(decimal)
AlternativePrice(string)

UserControl
中,我有
TextBlock
,我想根据评估
AlternativePrice==decimal.Zero
设置该
Text
属性

如果
true
Text
属性应设置为
Text={Binding Price}
,如果
false
,则
Text={Binding AlternativePrice}

我发现一些指南提到使用
触发器
,但我无法让它运行。 有没有办法做到这一点

以下是我的部分代码:

<TextBlock Foreground="..." x:Name="priceTextBlock" TextWrapping="Wrap" Text="{Binding ?}"/>

提前感谢您的帮助。

使用转换器:

class MyConverter : IMultiValueConverter
{
  public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
  {
    decimal v1 = (decimal)values[0];
    decimal v2 = (decimal)values[1];

    decimal res = v1 != 0 ? v1 : v2;
    return res.ToString();
  }

  public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
  {
    string[] splitValues = ((string)value).Split(' ');
    return splitValues;
  }
}
XAML中的用法

<UserControl.Resources>
  <converter:MyConverter x:Key="Conv" />
</UserControl.Resources>

<TextBlock>
  <TextBlock.Text>
    <MultiBinding Converter="{StaticResource Conv}">
      <Binding Path="AlternativePrice" />
      <Binding Path="Price" />
    </MultiBinding>
  </TextBlock.Text>
</TextBlock>


当然,您应该在
Convert
方法中添加一些检查(
values!=null
values.Count==2
等等)。

我不使用WPF,但我怀疑您的处理代码(.cs code-behind)中需要对照您想要进行数据绑定的字段进行检查(例如:IF(AlternativePrice.equals(decimal.zero)){priceTextBlock.BindingSource={Binding Price}else{priceTextBlock.BindingSource={Binding AlternativePrice}我刚刚意识到我是多么愚蠢,用你写的东西在代码背后是多么容易做到:-P我的错。无论如何,谢谢你的主意。谢谢你的替代方案,我会把这个保存起来以备将来使用。