[解決済み】WPFで逆ブーリアンプロパティをバインドする方法は?
2022-04-15 08:56:10
質問
私が持っているオブジェクトは
IsReadOnly
プロパティがあります。このプロパティが真である場合、私は
IsEnabled
プロパティを false に設定します。
と同じように簡単にできると信じたい。
IsEnabled="{Binding Path=!IsReadOnly}"
が、WPFではそれが通用しない。
スタイル設定をすべて行わなければならないのでしょうか?あるブールを別のブールの逆数に設定するような簡単なことのために、あまりにも言葉が多すぎるように思えます。
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsReadOnly}" Value="True">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsReadOnly}" Value="False">
<Setter Property="IsEnabled" Value="True" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
解決方法は?
boolプロパティを反転してくれるValueConverterを使えばいいんです。
XAMLです。
IsEnabled="{Binding Path=IsReadOnly, Converter={StaticResource InverseBooleanConverter}}"
コンバーターです。
[ValueConversion(typeof(bool), typeof(bool))]
public class InverseBooleanConverter: IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
if (targetType != typeof(bool))
throw new InvalidOperationException("The target must be a boolean");
return !(bool)value;
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
#endregion
}
関連
-
[解決済み] LabelとTextBlockの違い
-
[解決済み] WPFテキストボックスの多行化
-
[解決済み] TextViewのtextStyle(太字、斜体など)を設定する方法
-
[解決済み] XAMLで名前が名前空間に存在しないエラーが発生する
-
[解決済み] WPFとMVCは同じコンセプトなのか?
-
[解決済み】ListBox vs. ListView - データバインディングのための選択方法
-
[解決済み】WPFのTextBlockでテキストを縦に並べたい
-
[解決済み】WPFのデータバインディング。親」データコンテキストにアクセスするにはどうすればよいですか?
-
[解決済み】WPFとイニシャルフォーカス
-
[解決済み】WPFで逆ブーリアンプロパティをバインドする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] WCFとWPFの違いは何ですか?
-
[解決済み】ディレクトリを開くダイアログ
-
[解決済み】WPFのテキストブロックを選択可能にする方法はありますか?
-
[解決済み】1つのWPF TextBlockに複数の値をバインドする方法は?
-
[解決済み】MVVMのフレームワークは何を使えばいい?[クローズド]
-
[解決済み】Window Height="Auto "が期待通りに動作しない。
-
[解決済み】WPFのコントロールテンプレートとDataTemplateの違いについて
-
[解決済み】WPFデータグリッドの下部に空の行が表示される。
-
[解決済み】WPFで逆ブーリアンプロパティをバインドする方法は?
-
[解決済み] BooleanToVisibilityConverterを反転させるにはどうすればよいですか?