C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

.net/XAML/C#: XAML のプロパティーは Visibility 型だけど Boolean の DataContext に束縛したい場合の最適解、あるいは BooleanToVisibilityConverter について

Boolean なプロパティー HogeDataContext に束縛された Window のにある何かのコントロール(下の例では Button )の Visibility プロパティーXAML だけで簡単に WindowDataContextHoge に束縛したい!」と思ったんだ。

<Window ... 略 ...>
  ... 略 ...
  <Button Visibility="{Binding 😂 Hoge ? Visible : Hidden したいんだけど!!😂}"/>
  ... 略 ...
</Window>

『わからん。XAML なーんもワカラン… (けど何か良い方法はあるじゃろう… ヘ(゚∀゚ヘ) )』

と、思ったのだけど XAML 関連の知識が乏しいので msdn や stackoverflow を眺めるにも答えに近そうなキーワードがわからないのでもぞもぞ XAML 関連のインターフェースやら Binding やら Command やらを地味に読んで…いたのだけど、インターフェースの定義やら dynamic な暗黒呪文の把握やら面倒くさそーなコトが必要ならプログラマー・スナオビリティー的に ctor &状態変更が必要になるタイミングイベントに Visibility プロパティーを更新する .cs 実装を書いた方がはやくて楽なんでぃゎ…とか思い始めたのね。

そこで、チョット諦めてそういう実装にしようかと思いながらも…

などと他力本願。そしたらとっちゃんさんがまさに求めていたそれ的な最適解を教えてくれました😃

つまり…

<Window ... 略 ...>
  <Window.Resources>
    <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
  </Window.Resources>
  ... 略 ...
  <Button Visibility="{Binding Hoge,Converter={StaticResource BooleanToVisibilityConverter}}"/>
  ... 略 ...
</Window>

これだけで良かったんだね😂 カンタン、書く量も必要最低限で済んでますって感じ。とっても最適解♥

おまけ: その後の会話の続き

ありがとうございました😃