Powershell WPF ExpandoObjectを使ったINotifyPropertyChangedの実装、XamlのMultiBindingによる文字列結合サンプル

PowerShell

良い題名が浮かばなかったので、やったことをそのままダラダラと題名にしています。

Powershellでちょっとしたフォームを作りたいので、その勉強のために作成したサンプルです。

Xamlちょっと面白いかも。 

PowershellでINotifyPropertyChanged

Xamlの INotifyPropertyChanged のコツは、potimarimo – Qiita さんのサイトを参考にExpandoObjectを使用。

まず、Xaml上は、FirstName と LastName を定義しbinding

Powershellでは、ExpandoObjectを生成、FirstName/LastNameをメンバーを追加した後に、Xamlファイルを元にWindowフォーム化したオブジェクトにExpandoObjectをDataContextさせている。
これにより、FirstName1/LastName1 と FirstName2/LastName2が連動する仕組みになっている。

フォーム上で文字列結合

ここは、PowershellというよりもXamlの流儀で対応する。

 まずFirstName1とLastName1を構成するTextBoxにそれぞれ名前つける。FirstName1用のTextBoxには、NameにFirstName、LastName1用のTextBoxのNameにLastNameを指定する。

次にMultiBindingを指定。

MultiBindingに、Binding 先となる「TextBoxの」Text、引用先となるElementNameにFirstName/LastNameを指定。

肝になる部分は以下

参考

実行結果例

起動時

Taro papanda と入力した場合

FirstName1やLastName1 FirsName2やLastName2を個々に変更してもすべて同期する。

更に、Join FirstName And LastName に FirsName や LastName が結合された文字列が出現する。

参考にさせて頂いたサイト

PowerShellでWPFを使う #PowerShell – Qiita

C#WPFの道#2!StackPanelの使い方をわかりやすく解説!|ピーコックアンダーソン (anderson02.com)

MultiBindingの使い方と使いどころ – じょいのーと (hatenablog.com)

PowerShell WPF XAML multibinding datacontext template example – Part 4 | vGeek – Tales from real IT system Administration environment (vcloud-lab.com)

XAML の概要 – WPF .NET | Microsoft Learn

コメント

タイトルとURLをコピーしました