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

时间:2012-09-18 00:53:04

标签: c# wpf data-binding binding static

我遇到绑定到静态属性的问题。
我希望Label Content true false 取决于 bool 变量的值。

XAML:

<Label Content="{Binding Source={x:Static l:MainWindow.IsTrue}, Mode=OneWay}" />

代码背后:

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;
    }
}

始终显示 False

我知道为了实现双向绑定 I need to,请指定Path。但我需要一种方式绑定。

1 个答案:

答案 0 :(得分:7)

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

如果您正在使用WPF 4.5,则可以使用新的static property changed notification support来处理此问题。

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