AButton
的DependencyProperty
类型ICommand
为,如果设置了该属性,则单击CommandProperty
时将调用该命令。Button
通常在 MVVM 中,公开一个类型的属性ICommand
(您需要创建一个实现或从框架中获取一个)并在 XAML 中绑定到它,如下所示:
<Button Content="My Button"
Command="{Binding MyCommand}" />
视图模型:
public class MyViewModel : INotifyPropertyChanged
{
public ICommand MyCommand
{
get { … }
}
…
}
现在你不需要代码隐藏了。
至于获取要保存的文本,您再次希望将数据绑定到您的视图模型而不是代码隐藏。
而不是阅读TextBox.Text
,将该属性绑定到您的视图模型。
视图模型:
public class MyViewModel : INotifyPropertyChanged
{
…
private string _myText;
public string MyText
{
get { return _myText; }
set
{
_myText = value;
// raise property change notification
}
}
xml:
<TextBox Text="{Binding MyText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
请注意,我们使用的是TwoWay
绑定模式。这样,视图模型中的更改可以反映在TextBox
(这就是您需要实现的原因INotifyPropertyChanged
)中,并且TextBox
将传播到视图模型中。
我还添加了设置,因为默认情况下,只有在失去焦点UpdateSourceTrigger
时才会更新视图模型。TextBox
这样,只要值更改,视图模型就会更新。在你的应用程序中使用任何有意义的东西。