[英]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 != null
, values.Count == 2
等等)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.