Powershell WPF复选框绑定



我有一个菜单项复选框在我的主窗口以及另外两个窗口:

<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 "自动启动"在显示窗口之前将其设置为true,但它什么也不做。

我怎么能在我的代码中定义一个bool,使它,每当我改变bool,它反映在所有菜单项复选框绑定到它?(即使其他Windows尚未创建/显示)

我读到需要使它成为一个属性…我能不能创建一个类,给它设置一个属性叫做" autostart "它会起作用吗?

谢谢你@bluuf,你给了我一个提示。

无论如何出来,我实际上实现了做一个数据绑定以前在我的许多测试,但正如你所说,INotifyPropertyChanged是不那么容易在powershell处理,或者也许是?

好人Trevor Jones(链接在底部)解释了一个简单的方法,我做了最后的步骤来理解它,并将其应用到我的代码。谢谢你Trevor。

他基本上解释了这一个集合:

System.Collections.ObjectModel.ObservableCollection[Object]

有一个已经实现的iNotifyPropertyChanged在powershell中工作得很好,而不需要添加c#类。

您只需创建该集合,向其添加bool值,并指向绑定。

Trevor的文章,真的读了,值得你花时间:https://smsagent.blog/2017/02/03/powershell-deepdive-wpf-data-binding-and-inotifypropertychanged/

注:Trevor还提到了这篇文章,它解释了如何实现c#类(以及更多),如果有人感兴趣的话:https://www.ephingadmin.com/better-know-a-powershell-ui-50-shades-of-bindings-part-1/

最新更新