gpt4 book ai didi

c# - PropertyChanged 时 INotifyPropertyChanged

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:49 25 4
gpt4 key购买 nike

我有:

 <Page.Resources>  
<data:PublishManager x:Key="pubManager"/>
</Page.Resources>

然后在我的 textBlock 中我使用了这个:

        <TextBlock Grid.Row="2" Canvas.ZIndex="3" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Path=SocialStatus, Mode=TwoWay, Source={StaticResource pubManager}}"></TextBlock>

我的类 PublishManager 看起来像这样:

 public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}

private string _SocialStatus;
public string SocialStatus
{
get
{
return _SocialStatus;
}
set
{
_SocialStatus = value;
RaisePropertyChanged("SocialStatus");
}
}

为什么当我在我的方法代码中写这样的东西时它对我不起作用?

SocialStatus = "StackOverflow";

为什么我的带有 TextBlock 的页面不刷新内容?

最佳答案

问题是您在绑定(bind)场景中使用了静态资源。如果属性发生更改,则不会监视静态资源。您真的需要将 PublishManager 用作页面资源吗?

如果将 PublishManager 的实例设置为 DataContext 会更好。

所以首先设置Page.DataContext:

<Page.DataContext>  
<data:PublishManager/>
</Page.DataContext>

然后绑定(bind)到上下文属性:

<TextBlock Grid.Row="2" Canvas.ZIndex="3" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding SocialStatus}"/>

关于c# - PropertyChanged 时 INotifyPropertyChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34748145/

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