TextBox.Text绑定到ViewModel的属性
我有一个将TextBox内容绑定到另一个类中的属性的两种方法的问题。搜索stackoverflow给了很多技巧/解决方案,但似乎没有工作。TextBox.Text绑定到ViewModel的属性
在我的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(即,设置方法被调用),数据不会在屏幕上更新。
有没有人有解决方案来更新此变量时更改文本框?
亲切的问候,
米歇尔
你的视图模型类需要实现INotifyPropertyChanged的,你需要,只要你改变的财产,以提高该接口的事件。然后绑定会发现更改并更新文本框。
谢谢,我忘了告诉我已经使用INotifyPropertyChanged,但我忘记了在set方法中添加OnPropertyChanged调用。非常感谢你! – 2012-07-21 22:06:41
最好的办法就是放入物业二传手,并检查提价之前实际发生的价值变化。 – BlackWasp 2012-07-21 22:09:45
您的视图模型类应实现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
事件的例子。
谢谢,但我真的得到它的工作;顺便说一句,我真的需要显式调用OnPropertyChanged事件(不知道你是否在这里,而不是//Notify ...行,但为链接+1。 – 2012-07-21 22:10:43
是的,我做了,我只是没有知道你将如何实施它,从而留下评论。 – Bernard 2012-07-21 22:12:15
为什么绑定模式twoway?我原以为没有从视图中输入...... – pgee70 2015-10-01 11:36:12
也许一种方式绑定也可以(但对于回答问题无关紧要)。 – 2015-10-03 11:35:09