我遇到了将TextBox内容双向绑定到另一个类中的属性的问题。搜索stackoverflow提供了很多提示/解决方案,但似乎都没有。
在我的XAML代码中,我有:
< TextBox ... Width="336" IsReadOnly="True"
Text="{Binding Path=AssignedClearProgram, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
(...我删除了所有非重要项目)
在随附的cs代码中,我有:
public CombiWindow(Combi combi)
{
ViewModel = new CombiViewModel(combi);
DataContext = ViewModel;
}
在CombiViewModel中:
[UsedImplicitly]
public string AssignedClearProgram { get; set; }
似乎我第一次分配AssignedClearProgram时,文本框中填充了我设置的文本,但是在显示窗口并从代码更新AssignedClearProgram(即调用set方法)后,数据不是在屏幕上更新。
当更改此变量时,是否有人有更新文本框的解决方案?
亲切的问候,
米歇尔
答案 0 :(得分:5)
您的viewmodel类需要实现INotifyPropertyChanged,并且您需要在更改属性时引发该接口的事件。然后绑定将发现更改并更新文本框。
答案 1 :(得分:2)
您的视图模型类应实现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.
}
}
}
阅读this文章,了解如何实施INotifyPropertyChanged
界面并利用其PropertyChanged
事件。