簡體   English   中英

根據WPF中的布爾值將兩個不同的屬性綁定到一個TextBlock

[英]Binding two different Properties to one TextBlock based on boolean value in WPF

我有以下問題:我有一個UserControl ,它的DataContext設置為具有兩個不同屬性(與其他屬性並排)的一個對象: Price (decimal)AlternativePrice (string)

UserControl我具有TextBlock我想基於評估AlternativePrice == decimal.Zero設置哪個Text屬性。

如果為true ,則應將Text屬性設置為Text={Binding Price} ,如果為false ,則應設置Text={Binding AlternativePrice}

我找到了一些使用Triggers指南,但是我無法使其運行。 有沒有辦法做這樣的事情?

這是我的代碼的一部分:

<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 != nullvalues.Count == 2等等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM