我有一个UserData
包含用户设置和其他信息的类实例。由于它具有针对应用程序不同部分的设置,因此应该可以在任何地方轻松访问。出于这个原因,它是App
类的静态属性。
我需要一个菜单,其中一些可检查的项目是双向绑定到某些(Boolean
显然)设置的,以便菜单项始终显示设置是否打开/关闭,并可用于切换它。
由于该UserData
实例是一个静态属性,因此它本身不适用于双向绑定。
解决这种情况的最佳方法是什么?有没有一种方法不需要实例化一次性对象或单独为每个设置手动创建依赖属性?
我有一个UserData
包含用户设置和其他信息的类实例。由于它具有针对应用程序不同部分的设置,因此应该可以在任何地方轻松访问。出于这个原因,它是App
类的静态属性。
我需要一个菜单,其中一些可检查的项目是双向绑定到某些(Boolean
显然)设置的,以便菜单项始终显示设置是否打开/关闭,并可用于切换它。
由于该UserData
实例是一个静态属性,因此它本身不适用于双向绑定。
解决这种情况的最佳方法是什么?有没有一种方法不需要实例化一次性对象或单独为每个设置手动创建依赖属性?
您不能直接绑定到静态属性本身,但您可以使用静态属性的值作为绑定源,然后像绑定任何其他对象实例一样绑定到它的属性。您的 Binding 会有一些变化,但如果您想在同一个对象上执行一堆属性,您可以将静态对象用作 DataContext(这是单向),然后在 MenuItems 上进行常规绑定:
<Menu DataContext="{Binding Source={x:Static App.UserData}}">
<MenuItem Header="1" IsChecked="{Binding SomeUserProperty}"/>
<MenuItem Header="2" IsChecked="{Binding Property2}"/>
</Menu>