我有点迷失了,我试图将我的GUI上的标签绑定到我的代码中的字符串但是如果我将代码放在我的MainWindow()块中并且我无法更新它似乎只有工作它来自其他任何地方。
这是我的INotifyPropertyChanged类:
public class MyClass : INotifyPropertyChanged
{
private string _testLabel;
protected void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, e);
}
protected void OnPropertyChanged(string propertyName)
{
OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
}
public string testLabel
{
get { return _testLabel; }
set
{
if (value != _testLabel)
{
_testLabel = value;
OnPropertyChanged("testLabelChanged");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
这是MainWindow()块:
public MainWindow()
{
InitializeComponent();
testLabelName.DataContext = t;
t.testLabel = "Hello World 32432";
}
我也在外面宣布:
MyClass t = new MyClass();
这是我的XAML的片段:
<Label Name="testLabelName" Content="{Binding Path=testLabel, Mode=OneWay}" Height="28" Margin="0,0,12,29" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="128" />
我尝试通过使用按钮事件来设置标签来测试它,它似乎设置但GUI上没有任何变化。我认为GUI没有在PropertyChanged事件上更新。这是对的吗?
谢谢,
答案 0 :(得分:2)
我认为您的代码存在一个小问题。当您触发PropertyChanged事件时,您需要指定属性的名称。您对该属性的代码应如下所示:
public string testLabel
{
get { return _testLabel; }
set
{
if (value != _testLabel)
{
_testLabel = value;
OnPropertyChanged("testLabel"); // not testLabelChanged
}
}
}
除非您为属性指定正确的名称,否则UWP无法知道哪个属性实际已更改,因此不会更新UI。
答案 1 :(得分:0)
请更改:
OnPropertyChanged("testLabelChanged");
为:
OnPropertyChanged("testLabel");
答案 2 :(得分:0)
你是什么意思&#34;其他地方&#34; ?