PowerShellでWPFアプリケーションをBindingするときの注意点

 1.PowerShellでWPFアプリケーションのBindingについて

マニアックだけどPowerShellでWPFアプリケーションを作っている。INotifyChangedを実装したいけど、PowerShellにはgetterやsetterがないので通知が発行できない。
そこで仕方なく

 $this.txtBoxA.Text = "テスト"

と記載しているが、どうしてもBindingしたいときがある。

その場合の回避方法を調べたので忘れないうちにメモをしておく。

   $bindingExpression = $this.txtBoxA.GetBindingExpression([System.Windows.Controls.TextBox]::TextProperty)
   # UpdateTarget メソッドを呼び出し、UIを強制的に更新する
   if ($bindingExpression -ne $null) {
       $bindingExpression.UpdateTarget()
   }

コントロールやプロパティが変わったときには[System.Windows.Controls.TextBox]を変更したり、「TextProperty」を変更すれば通知ができる。


DataGridについても同様のことができると思っていたけどいろいろと調べると正確にプロパティを取得することが難しそうなので、ObservableCollectionインスタンスを再生成して、再度バインドする方法がいいと思う。

$collection = New-Object System.Collections.ObjectModel.ObservableCollection[string]

[string]の部分は独自クラスを定義する。
基本的にはDataTableをBindingしておけばいいけど、特定行の色を変えたい時などには独自クラスを作らないとダメかなと思う。

Windows Formで作れば簡単なんだけど、良いデザイナーがないので仕方なく・・・
※WPFはPSScriptPad.exeを使えば分離してデザインできる。

PowerShellでWPFアプリケーションをBindingするときの注意点

 1.PowerShellでWPFアプリケーションのBindingについて マニアックだけどPowerShellでWPFアプリケーションを作っている。INotifyChangedを実装したいけど、PowerShellにはgetterやsetterがないので通知が発行できない。 そ...