pat*_*eza 2 c# data-binding wpf binding static
我有绑定到静态属性的问题.
我希望有Label与Content 真或假取决于值布尔变量.
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.但我需要一种方式绑定.
问题是WPF不知道您的财产何时(或是否)发生变化.与实例方法不同,INotifyPropertyChanged您可以实现没有样式的接口,因为您不能拥有"静态接口".因此,它永远不会看到您更改的值.
如果您使用的是WPF 4.5,则可以使用新的静态属性更改通知支持来处理此问题.
在.NET 4.0或更早版本中,处理此问题的最简单方法通常是将属性包装为单例,并INotifyPropertyChanged在单例实例上使用.
| 归档时间: |
|
| 查看次数: |
679 次 |
| 最近记录: |