2009-07-02 10 views
1

ブール値プロパティの逆関数にバインドする超高速な方法はありますか?このようなもの:バインドしない

<TextBox Text="Some Text" IsEnabled="{Binding !EnableTextBox}" /> 

私はDataTriggerを使用することができますが、私は素晴らしい略記を望んでいました。

public class BoolInverterConverter : IValueConverter 
{ 
    #region IValueConverter Members 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (value is bool) 
     { 
      return !(bool)value; 
     } 
     return value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 

    #endregion 
} 

<TextBox Text="Some Text" IsEnabled="{Binding EnableTextBox, Converter={StaticResource BoolInverterConverter}}" /> 

それとも迅速解決策は自分のVMに別の読み取り専用のブール値プロパティを追加し、その値を否定することです:私はこれを行うために必要がある場合

答えて

4

、私はシンプルなコンバータを書きました。

+0

私はそれを考えましたが、XAMLとDataTriggerの間で短絡することはありません。私は超速記を望んでいた。 –

+1

ええ、コンバータはあなたのXAMLをむしろ醜いものにすることができます。誰かが何をしているのかよく知っていなければ、コードの読み込み時間を減らすことができます。 XAMLでいくつかの機能を有効にして他の機能を無効にする必要がある複数の場所を1つのブールで使用している場合、通常は読み取り専用のプロパティルートに移動します。一回限りのものなら、私はコンバータを使用します。 – opedog

+1

Ewww、それは私か、あるいは利用可能なこれらのソリューションのすべてが望ましいものではないようです。私はBoolToVisibilityコンバータをBoolInverseConverterでチェーンする必要があるという複雑さが増しているのと同じ結束になります。そうしないと、ViewModelにいくつかのIsプロパティとIsNotプロパティが公開されます。どちらもきれいではありません! – jpierson

関連する問題