绑定到静态属性的一种方法失败

pat*_*eza 2 c# data-binding wpf binding static

我有绑定到静态属性的问题.
我希望有LabelContent 取决于值布尔变量.

XAML:

<Label Content="{Binding Source={x:Static l:MainWindow.IsTrue}, Mode=OneWay}" />
Run Code Online (Sandbox Code Playgroud)

代码背后:

public partial class MainWindow : Window
{
    public static bool IsTrue { get; set; }
    DispatcherTimer myTimer;

    public MainWindow()
    {
        InitializeComponent();

        myTimer = new DispatcherTimer();
        myTimer.Interval = new TimeSpan(0, 0, 2); // tick every 2 seconds
        myTimer.Tick += new EventHandler(myTimer_Tick);
        myTimer.IsEnabled = true;
    }

    void myTimer_Tick(object sender, EventArgs e)
    {
        IsTrue = !IsTrue;
    }
}
Run Code Online (Sandbox Code Playgroud)

它始终显示False.

我知道为了实现双向绑定 我需要指定Path.但我需要一种方式绑定.

Ree*_*sey 7

问题是WPF不知道您的财产何时(或是否)发生变化.与实例方法不同,INotifyPropertyChanged您可以实现没有样式的接口,因为您不能拥有"静态接口".因此,它永远不会看到您更改的值.

如果您使用的是WPF 4.5,则可以使用新的静态属性更改通知支持来处理此问题.

在.NET 4.0或更早版本中,处理此问题的最简单方法通常是将属性包装为单例,并INotifyPropertyChanged在单例实例上使用.