C# 文本框。文本绑定到ViewModel';s属性
我在将文本框内容双向绑定到另一个类中的属性时遇到问题。搜索stackoverflow提供了很多提示/解决方案,但似乎都不起作用 在我的XAML代码中,我有:C# 文本框。文本绑定到ViewModel';s属性,c#,wpf,binding,properties,textbox,C#,Wpf,Binding,Properties,Textbox,我在将文本框内容双向绑定到另一个类中的属性时遇到问题。搜索stackoverflow提供了很多提示/解决方案,但似乎都不起作用 在我的XAML代码中,我有: < TextBox ... Width="336" IsReadOnly="True" Text="{Binding Path=AssignedClearProgram, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> 在CombiViewModel中: [Us
< TextBox ... Width="336" IsReadOnly="True"
Text="{Binding Path=AssignedClearProgram, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
在CombiViewModel中:
[UsedImplicitly]
public string AssignedClearProgram { get; set; }
似乎在我第一次分配AssignedClearProgram时,文本框中填充了我设置的文本,但是在显示窗口并从代码更新AssignedClearProgram(即调用set方法)后,屏幕中的数据不会更新
当这个变量改变时,有人有更新文本框的解决方案吗
亲切问候,
Michel您的viewmodel类需要实现INotifyPropertyChanged,并且您需要在更改属性时引发该接口的事件。然后绑定将发现更改并更新文本框。您的视图模型类应该实现
INotifyPropertyChanged
接口
您的财产将如下所示:
private string assignedClearProgram;
public string AssignedClearProgram
{
get { return assignedClearProgram; }
set
{
if (assignedClearProgram != value)
{
assignedClearProgram = value;
// Notify property has changed here using PropertyChanged event from INotifyPropertyChanged.
}
}
}
阅读文章,了解如何实现
INotifyPropertyChanged
接口并利用其PropertyChanged
事件的示例。谢谢,我忘了告诉您我已经在使用INotifyPropertyChanged,但我忘了在set方法中添加OnPropertyChanged调用。非常感谢你!最好的办法是在属性设置器中输入,并在引发事件之前检查值是否发生了实际更改;顺便说一句,我真的需要显式调用OnPropertyChanged事件(不知道你是不是在这里指的是//Notify…行,而不是//Notify…行。但是链接是+1。是的,我知道,我只是不知道你会如何实现它,因此留下了评论。为什么绑定模式是双向的?我本以为没有来自视图的输入……也许单向绑定也可以(但这对问题的回答并不重要)。
private string assignedClearProgram;
public string AssignedClearProgram
{
get { return assignedClearProgram; }
set
{
if (assignedClearProgram != value)
{
assignedClearProgram = value;
// Notify property has changed here using PropertyChanged event from INotifyPropertyChanged.
}
}
}