您可能需要使用一个MultiBinding
:
<TabItem Name="MyTab" Header="This should be enabled when result is 2">
<TabItem.IsEnabled>
<MultiBinding Converter={StaticResource MyAddConverter}>
<Binding Path=ValueA UpdateSourceTrigger=PropertyChanged />
<Binding Path=ValueB UpdateSourceTrigger=PropertyChanged />
</MultiBinding>
</TabItem.IsEnabled>
<!--Some other stuff-->
</TabItem>
在您的视图模型,您应该具备以下(假设你的视图模型实现INotifyPropertyChanged
):
public double ValueA
{
get { return _valueA; }
set
{
_valueA = value;
OnPropertyChanged("ValueA");
}
}
ValueB
也是如此,这将允许WPF每次更新Binding
或者ValueA
或ValueB
改变
你的转换器应该是这样的:
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
double valueA = (double)values[0];
double valueB = (double)values[1];
return valueA + valueB == 2;
}
这将让你有转换器中,这将再次每隔值a或VALUEB时间会改变被称为定义一个外部方法。
我想说这就是你需要的全部=)
_valueA和_valueB从何而来,何时应该重新计算? –
它们可以是当前类的全局变量,也可以是一些外部计算器类的分配 - 这并不重要。我只需要将IsEnabled属性绑定到像这样的方法或类属性。 – JiKra