我是 C# 和 WPF 的新手。我写了一个简单的程序。我有一个名为 的类Counter
,它公开了一个从 0 开始的只读属性Count
,以及一个Increment
简单地将计数加一的公共方法。Counter
实现INotifyPropertyChanged
。
我有一个 Window 类(代码如下)。我将一个Counter
对象的实例传递给构造函数并执行绑定。该窗口有一个按钮和一个标签。标签绑定到计数器的Count
属性,按钮调用Increment
.
这一切都有效。
但是,我在网络和 MSDN 上看到的大多数示例主要处理在 XAML 中定义绑定。如何在此处修改我的示例以将绑定操作从代码后面移到标记中?VS2010的Properties窗口中的Binding属性好像不知道怎么做我想做的。也许这是不可能的?
另一个问题:我认为这个示例不适合 MVVM……我的 Counter 类是独立的,除了通过其属性之外,它不与任何地方的视图相关联。但是,CounterWindow 类持有对它的引用。这是此参考的正确位置吗?我也认为也许我应该创建窗口,然后设置CounterObject
我将使用的属性(例如),而不是通过构造函数传递。
public partial class CounterWindow : Window {
Counter ctr;
public CounterWindow(Counter ctr) {
InitializeComponent();
this.ctr = ctr;
Binding b = new Binding("Count");
b.Source = ctr;
CounterLabel.SetBinding(Label.ContentProperty, b);
}
private void IncrementButton_Click(object sender, RoutedEventArgs e) {
ctr.Increment();
}
}