C# 文本框。文本绑定到ViewModel';s属性

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

我在将文本框内容双向绑定到另一个类中的属性时遇到问题。搜索stackoverflow提供了很多提示/解决方案,但似乎都不起作用

在我的XAML代码中,我有:

< 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.
       }
   }
}