AButtonには、と呼ばれるDependencyPropertyタイプがあり、そのプロパティが設定されている場合、がクリックされたときにコマンドが呼び出されます。ICommandCommandPropertyButton
通常、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このようにして、値が変更されるたびにビューモデルが更新されます。アプリケーションで意味のあるものを使用してください。