Powershell WPF 复选框绑定

Powershell WPF checkbox binding

我的主 window 和另外两个 windows:

中都有一个 MenuItem Checkbox
    <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>

我用它来定义脚本是否在用户登录时自动启动(一个函数检查预定的 activity 并相应地设置复选框)并在单击时启用或禁用它。

现在,如果我想让所有 3 个不同的 windows 复选框保持同步怎么办?

我阅读了很多关于绑定的内容,但无法真正让它发挥作用,我尝试在布尔“自动启动”上设置绑定,并在显示 window 之前将其设置为真,但它什么都不做全部.

我如何在我的代码中定义一个 bool 并使其在我更改该 bool 时反映在所有绑定到它的菜单项复选框上? (即使其他 windows 尚未成为 created/shown)

我读到需要将它设为 属性...我可以只设为 class,设置一个 属性 给它称为“AutoStart”之类的东西,它会工作?

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

不管怎样,我实际上在之前的许多测试中实现了数据绑定,但正如您所说,INotifyPropertyChanged 在 powershell 中并不那么容易处理,或者也许是?

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

他基本上解释了这一集:

System.Collections.ObjectModel.ObservableCollection[Object]

有一个已经实现的 iNotifyPropertyChanged,它在 powershell 中运行良好,无需添加 c# classes。

您只需创建该集合,将布尔值添加到其中,然后将 binding.source 指向它。

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

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