gpt4 book ai didi

c# - 绑定(bind)到静态属性的一种方法失败

转载 作者:行者123 更新时间:2023-11-30 20:04:46 35 4
gpt4 key购买 nike

我在绑定(bind)到静态属性时遇到问题。
我想要 LabelContent truefalse 取决于 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

我知道为了实现双向绑定(bind) I need to指定路径。但我需要一种方式绑定(bind)。

最佳答案

问题是 WPF 不知道您的属性何时(或是否)发生变化。与实例方法不同,您无法实现 INotifyPropertyChanged 样式的接口(interface),因为您无法拥有“静态接口(interface)”。因此,它永远不会看到您更改的值。

如果您使用的是 WPF 4.5,则可以使用新的 static property changed notification support来处理这个。

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

关于c# - 绑定(bind)到静态属性的一种方法失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12469023/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com