我确定这是一个非常基本的问题,但我甚至不知道谷歌的技术术语/行话并自学成才。
我创建了一个实现INotifyPropertyChanged的简单模型。
public class PushNotes : INotifyPropertyChanged
{
public string CompletePushNotes { get; set; }
}
在cs中绑定:
evt_pushNotes = new PushNotes()
{
CompletePushNotes = "HelloThere"
};
this.DataContext = evt_pushNotes;
//snip later in code
Helpers.UpdateCompletePushNotes();
在XAML中:
<xctk:RichTextBox x:Name="PushEmail" Text="{Binding Path=CompletePushNotes, Mode=OneWay}" ScrollViewer.VerticalScrollBarVisibility="Auto" Margin="40,398,40,40">
<xctk:RichTextBox.TextFormatter>
<xctk:PlainTextFormatter />
</xctk:RichTextBox.TextFormatter>
</xctk:RichTextBox>
助手:
internal static class Helpers
{
internal static void UpdateCompletePushNotes()
{
//duhhhh what do I do now??
//If I create a new PushNotes it will be a different instantiation....???
}
}
现在这一切都很好但是我在helper类中有一个方法需要更改CompletePushNotes。
我再次知道这是一个简单/新手的问题,但我不知道自己需要学习什么。
所以我将PushNotes类设为静态或单例。是否有一些全球约束&#34;树&#34;我可以走路找到附加到UI元素的实例化和绑定的PushNotes类?
不寻找分发只是需要知道我在寻找什么。
TIA
答案 0 :(得分:4)
您的PushNotes类未实现INotifyPropertyChanged接口。实现后,您需要修改CompletePushNotes属性以获得支持字段,并且在属性的setter中,您可以引发PropertyChanged事件以通知UI源属性更新。
public class PushNotes : INotifyPropertyChanged
{
string completePushNotes;
public string CompletePushNotes
{
get
{
return completePushNotes;
}
set
{
completePushNotes = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
}
使PushNotes类静态不会对您有所帮助。你似乎有一个PushNotes实例(evt_pushNotes)的变量,所以只需:
evt_pushNotes.CompletePushNotes = something;
如果你有一个帮助类做某事,请调用helper类中的方法并返回值,或者将PushNotes实例作为参数传递给helper类。
internal static class Helpers
{
internal static void UpdateCompletePushNotes(PushNotes pushNotes)
{
pushNotes.CompletePushNotes = something;
}
}