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
}
}
xaml:
<TextBox Text="{Binding MyText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
TwoWay
バインディングモードを使用していることに注意してください。TextBox
そうすれば、ビューモデルの変更を(実装する必要がある理由です)に反映でき、のINotifyPropertyChanged
変更TextBox
はビューモデルに伝播されます。
デフォルトでは、ビューモデルはフォーカスを失っUpdateSourceTrigger
たときにのみ更新されるため、設定も追加しました。TextBox
このようにして、値が変更されるたびにビューモデルが更新されます。アプリケーションで意味のあるものを使用してください。