WPF TwoWay绑定到静态类属性

如果Mode = OneWay没有问题,但我有:Class:

namespace Halt { public class ProjectData { public static string Username {get;set;} } } 

和XAML:

 xmlns:engine="clr-namespace:Halt.Engine"  

由于TwoWay模式,这不想工作。 那么如何解决呢?

如果绑定需要双向,则必须提供路径。 如果类不是静态的,那么在静态属性上进行双向绑定是一种技巧:在资源中声明类的虚拟实例,并将其用作绑定的源。

    ...  

使用静态属性绑定语法(据我所知,自WPF 4.5起可用):

  

无需设置Mode="TwoWay" ,因为这是TextBox.Text属性的默认值。


虽然没有明确要求,但您可能还想实现属性更改通知。

请参阅此答案以了解如何操作。

当我必须绑定到静态属性时,我使用ViewModel,该ViewModel具有在静态属性上获取和设置的属性,例如

 public class ProjectData { public static string Username {get;set;} } public class ViewModel { public string UserName { get{ return ProjectData.Username ; } set { ProjectData.Username = value; } } } 

然后我将ViewModel的实例设置为UI DataContext。