您可能需要使用一個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