TextBox.Text绑定到ViewModel的属性

时间:2012-07-21 21:59:46

标签: c# wpf binding properties textbox

我遇到了将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方法)后,数据不是在屏幕上更新。

当更改此变量时,是否有人有更新文本框的解决方案?

亲切的问候,

米歇尔

2 个答案:

答案 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事件。