WPFにおける双方向データバインディングの方法は何ですか?

WPFでは、双方向データバインディングを実現するには、以下の方法を使用できます:

  1. モードは「双方向」です。

サンプルコード:

ViewModelのクラスでプロパティを定義します。

private string _name;
public string Name
{
    get { return _name; }
    set 
    {
        _name = value;
        OnPropertyChanged(nameof(Name)); //触发属性更改通知
    }
}

public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}

XAML内でのプロパティのバインド:

<TextBox Text="{Binding Name, Mode=TwoWay}" />
  1. Commandを使用すると、UI要素(例えばボタン)のCommand属性をViewModelの命令にバインドすることができ、ViewModelで双方向のデータバインディングとロジック処理を実現することができます。

サンプルコード:

ViewModel内にコマンドを定義します。

private ICommand _updateCommand;
public ICommand UpdateCommand
{
    get
    {
        if (_updateCommand == null)
        {
            _updateCommand = new RelayCommand(UpdateName, CanUpdateName);
        }
        return _updateCommand;
    }
}

private bool CanUpdateName(object parameter)
{
    //根据具体逻辑判断是否可以执行命令
    return true;
}

private void UpdateName(object parameter)
{
    //根据具体逻辑更新Name属性的值
    Name = "New Name";
}

XAMLにおけるコマンドのバインディング:

<Button Content="Update" Command="{Binding UpdateCommand}" />

ユーザーがボタンをクリックした時に、命令が実行されてName属性の値が更新されます。

bannerAds