投稿

1月, 2025の投稿を表示しています

WPF の XAML で Convert を複数個呼び出したい!

常々XAML の Convert を複数個呼び出したいが何かないかなぁ…と考えていたが見つからなかったため、しょうがなく「ViewModel側で変換して、XAMLでConvertして…」という不毛なことをやっていた しかし!やり方が見つかった!それもあのChatGTPさん!たまには役に立つじゃん!やるじゃん! てな感じです。 下記の動作は、TabControl を使っていますが、TabControl外に連動した表示・非表示を切り替えたい場合の例です。 ・TabIndex は 0~の数字を使用しています。 ・TabIndex の 0~は定数化しています。(Constants.TabIndexA/Constants.TabIndexB) ・TabIndex は Service側で管理し、全ViewModel共通で参照できるようにしています。 動作イメージ: 1.ユーザがTabを変更した場合、TabIndex の値が0/1… に変更されます。 2.TabIndex が変更された場合、EqualsConverter を使って、ConverterParameter で指定された値と同じかどうかを判断します。  同じ場合はtrue、異なる場合はfalse を返却します。 3.2.で変換されたtrue/false の値を元に BooleanToVisibilityConverter を使って、「true:Visible」、「false:Collapsed」を返却します。 4.3.の結果をVisibility に設定することで、ユーザが選んだTabに合わせて、TabControl外の項目を非表示に設定できます。 やり方: 1.Converter を作る public class CompositeConverter : IValueConverter { /// <summary> /// 1番目に呼び出すコンバーター /// </summary> public IValueConverter Converter1 { get; set; } /// <summary> /// 2番目に呼び出すコンバーター /// </summary...