【发布时间】:2016-08-09 01:12:28
【问题描述】:
假设我有一个 MVVM 应用程序,其中包含项目的 ListView 和一个编辑所选项目的属性(文本)的文本框。
<TextBox Text="{Binding SelectedItem.Text}"/>
<ListBox ItemsSource="{Binding Items}" DisplayMemberPath="Text" SelectedItem="{Binding SelectedItem}"
在我的 ViewModel 中,我有一个 ObservableCollection 项目。每个项目都实现 INotifyPropertyChanged 并具有所需的属性。如果我更改 TextBox 的文本,则列表不会更新,因为我只有一个没有通知的属性:
public class Item : INotifyPropertyChanged
{
public string Text { get; set; }
}
我的问题是:有没有办法在不使用 PropertyChanged 的情况下更新我的列表的文本属性?:
private string _Text;
public string Text
{
...
set
{
_Text = value;
PropertyChanged("Text");
}
}
有没有办法在更改我的 TextBox 的文本后直接从我的视图中触发 PropertyChanged - 或其他方法?
感谢您的帮助!
【问题讨论】:
-
你的
TextBox在哪里?我只看到TextBlock。为什么不能从视图模型中引发PropertyChanged事件? -
返回您在下方留下的现已删除的评论,然后点击您留下的链接。然后阅读该答案的内容。然后将其与您的
Item类及其Text属性进行比较。答案就在眼前。 -
@dkozl:我将 TextBlock 更改为 TextBox ...我的错误。如果没有实现 INotifyPropertyChanged,它就可以在没有任何通知的情况下工作(看这里:stackoverflow.com/questions/7767218/…)。现在我实现了 INPC,我不想在我的项目的每个属性上添加通知(这只是一个最小的示例)
-
@slugster:我已经读了好几遍了……但我真的不知道如何使用它。你能给我一个提示吗?
标签: c# wpf mvvm binding inotifypropertychanged