在WPF中,我使用MultiBinding
看起来像这样:
<DataTrigger Value="True">
<DataTrigger.Binding >
<MultiBinding Converter="{StaticResource MyConverter}">
<Binding Path="A" />
<Binding Path="B" />
</MultiBinding>
</DataTrigger.Binding>
<Setter Property="BorderBrush" Value="Red" />
</DataTrigger>
虽然这是一个有点hacky的方法,因为我需要将A
传递到MyConverter
,但我不想更新它(NotifyPropertyChanged
)触发DataTrigger
/ MyConverter
,因为它是不必要的(我仍然需要B
来触发更新)。
是否有任何解决方案或完全不同的方法?
答案 0 :(得分:1)
您可以创建一个具有值A的依赖项属性的转换器:
public class MyConverter : DependencyObject, IValueConverter
{
private static readonly DependencyProperty ValueAProperty =
DependencyProperty.Register("ValueA", typeof(object), typeof(MyConverter));
public object ValueA
{
get { return GetValue(ValueAProperty); }
set { SetValue(ValueAProperty, value); }
}
public object Convert(
object value, Type targetType, object parameter, CultureInfo culture)
{
return value.Equals(ValueA); // or whatever
}
public object ConvertBack(
object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
并像这样使用它:
<DataTrigger Value="True">
<DataTrigger.Binding >
<Binding Path="B">
<Binding.Converter>
<local:MyConverter ValueA="{Binding A}"/>
</Binding.Converter>
</Binding>
</DataTrigger.Binding>
<Setter Property="BorderBrush" Value="Red" />
</DataTrigger>
依赖项属性的类型当然可能与object
不同。