【发布时间】:2009-09-30 18:17:41
【问题描述】:
我的视图模型上有一个字符串类型的简单属性。我想将它绑定到一个文本框,以便更改文本框更新字符串并更改字符串更新文本框。我真的有一个围绕实现 INotifyPropertyChanged 的字符串类型的包装类,还是我在这里遗漏了一些非常简单的东西?
【问题讨论】:
标签: .net wpf data-binding
我的视图模型上有一个字符串类型的简单属性。我想将它绑定到一个文本框,以便更改文本框更新字符串并更改字符串更新文本框。我真的有一个围绕实现 INotifyPropertyChanged 的字符串类型的包装类,还是我在这里遗漏了一些非常简单的东西?
【问题讨论】:
标签: .net wpf data-binding
实现 INotifyPropertyChanged 真的很容易。但我会做什么,ViewModel 类几乎总是(如果不是总是)从 DependencyObject 继承;我会将此文本属性设置为 DependencyProperty,它会自动通知对其绑定的任何内容的更改。您可以使用 C# 中的 propdp 快捷方式(在 Visual Studio 2008 中,不确定是否也在 2005 中)更快地创建 DependencyProperty,只需键入 propdp 并按两次 Tab 键。它看起来像这样:
public string SomeText
{
get { return (string)GetValue(SomeTextProperty); }
set { SetValue(SomeTextProperty, value); }
}
// Using a DependencyProperty as the backing store for SomeText. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SomeTextProperty =
DependencyProperty.Register("SomeText", typeof(string), typeof(YourClassName), new UIPropertyMetadata(String.Empty));
【讨论】:
实际上,您不必围绕字符串类型创建包装类。 INotifyPropertyChanged 将为每个 ViewModel 类实现。需要此接口来向绑定框架发送有关更改数据的通知。
我建议访问 http://mvvmfoundation.codeplex.com/ 并将 MVVM 基础类合并到您的 WPF 项目中。 MVVM 基础提供了一组基本的可重用类,每个人都应该使用。虽然还有其他广泛的 WPF 框架,如 Cinch、Onyx 等,但您可以使用。
【讨论】:
【讨论】: