我有一个具有Message
属性的WPF控件。
我目前有这个:
<dxlc:LayoutItem >
<local:Indicator Message="{Binding PropertyOne}" />
</dxlc:LayoutItem>
但我需要将Message
属性绑定到两个属性。
显然不可能这样做,但这可以帮助解释我想要的是什么:
<dxlc:LayoutItem >
<local:Indicator Message="{Binding PropertyOne && Binding PropertyTwo}" />
</dxlc:LayoutItem>
答案 0 :(得分:27)
尝试使用MultiBinding
:
描述附加到单个绑定目标属性的Binding对象的集合。
示例:
XAML
<TextBlock>
<TextBlock.Text>
<MultiBinding Converter="{StaticResource myNameConverter}"
ConverterParameter="FormatLastFirst">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
Converter
public class NameConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string name;
switch ((string)parameter)
{
case "FormatLastFirst":
name = values[1] + ", " + values[0];
break;
case "FormatNormal":
default:
name = values[0] + " " + values[1];
break;
}
return name;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
string[] splitValues = ((string)value).Split(' ');
return splitValues;
}
}
答案 1 :(得分:23)
<TextBlock.Text>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="FirstName"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBlock.Text>
答案 2 :(得分:5)
您无法在XAML中执行And
操作。
在视图模型类中创建包装属性,该属性将返回两个属性,并与该属性绑定。
public bool UnionWrapperProperty
{
get
{
return PropertyOne && PropertyTwo;
}
}
<强> XAML 强>
<local:Indicator Message="{Binding UnionWrapperProperty}" />
另一种方法是使用 MultiValueConverter
。将两个属性传递给它,然后从转换器返回和值。