7

文字列値をテキスト ボックスにバインドしたいのですが、チェック ボックスがオンの場合のみです。したがって、チェックボックスがオンになっている場合はテキストボックスにメッセージ 1 を表示し、そうでない場合はメッセージ 2 を表示します。

これを行う最善の方法は何ですか?私のオブジェクトでListプロパティを使用する方が良いですか?チェックボックスがオンになっているかどうかは、List<>内のどのアイテムが表示されているかによって異なります

また

チェックボックスが選択された後、オブジェクトのプロパティ(今回は文字列型)を更新してから再バインドする方が良いですか?

4

1 に答える 1

19

INotifyPropertyChanged を理解していることを前提とした MVVM タイプのアプローチを次に示します (理解する必要があります)。それで遊んで、行き詰まったことは何でも気軽に聞いてください。

VM (viewmodel コード)

public class MyViewModel : INotifyPropertyChanged {

    const string Msg1 = "blah 1";
    const string Msg2 = "blah 2";

    private bool _isSelected;
    public bool IsSelected{
        get { return _isSelected; }
        set {
            if(_isSelected == value) return;

            _isSelected = value;
            MyBoundMessage = _isSelected ? Msg1 : Msg2;

            NotifyPropertyChanged(()=> IsSelected);
            NotifyPropertyChanged(()=> MyBoundMessage);
        }
    }

    public string MyBoundMessage {get;set;}
}

V (XAML を表示)

<CheckBox IsChecked="{Binding IsSelected}" />
<TextBox Text="{Binding MyBoundMessage}" />
于 2012-06-16T16:58:56.687 に答える