我的主視窗以及另外兩個視窗中有一個 MenuItem 復選框:
<MenuItem x:Name = 'FileMenu' Header = '_File'>
<MenuItem x:Name = 'EnableAutostart' Header = '_Enable Autostart' IsChecked="{Binding AutoStart, Mode= TwoWay}" IsCheckable="true" ToolTip = 'Enables the autostart.' InputGestureText ='Ctrl S'></MenuItem>
我用它來定義腳本是否在用戶登錄時自動啟動(一個函式檢查計劃的活動并相應地設定復選框)以及單擊它時啟用或禁用它。
現在,如果我想讓所有 3 個不同的視窗復選框保持同步怎么辦?
我讀了很多關于系結的文章,但無法真正讓它發揮作用,我嘗試在布爾“自動啟動”上設定系結,并在顯示視窗之前將其設定為真,但它什么也沒做。
如何在我的代碼中定義一個 bool 并使它成為這樣,每當我更改該 bool 時,它反映在系結到它的所有 menuitems 復選框上?(即使尚未創建/顯示其他視窗)
我讀到需要使它成為一個屬性...我可以只創建一個類,為其設定一個名為“AutoStart”之類的屬性,它會起作用嗎?
uj5u.com熱心網友回復:
謝謝@bluuf,你給了我一個提示。
無論如何,我實際上在之前的許多測驗中都實作了資料系結,但正如你所說,INotifyPropertyChanged 在powershell中并不容易處理,或者它可能是?
好人 Trevor Jones(底部的鏈接)解釋了一個簡單的方法,我做了最后的步驟來理解它并將其應用到我的代碼中。謝謝特雷弗。
他基本上解釋了這一集:
System.Collections.ObjectModel.ObservableCollection[Object]
有一個已經實作的 iNotifyPropertyChanged,它在 powershell 中運行良好,無需添加 c# 類。
您只需創建該集合,將您的 bool 添加到其中,然后將 binding.source 指向它。
Trevor 的文章,實際閱讀,值得你花時間: https ://smsagent.blog/2017/02/03/powershell-deepdive-wpf-data-binding-and-inotifypropertychanged/
PS Trevor 還指出這篇文章解釋了如何實作 c# 類(以及更多),如果有人感興趣的話: https ://www.ephingadmin.com/better-know-a-powershell-ui-50-shades-of -bindings-part-1/
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/471398.html
