1

にはComboboxと 2 つのボタンがありますUserControl。これらのボタンを設定して、選択したインデックスをComboboxXAML で直接変更することはできますか?

私は2つのアプローチでこれを行いました:

分離コード

 private void nextBut_Click(object sender, RoutedEventArgs e)
        {
            combo.SelectedIndex++;
        }

        private void prevBut_Click(object sender, RoutedEventArgs e)
        {

            combo.SelectedIndex--;
        }

または、これらのボタンにコマンドをバインドし、そのコマンドを my で定義しますModelView

XAML について別の質問がありますが、別の質問をするか、この機会を利用するかは本当にわかりません。私はそれが簡単でなければならないと確信しています(少なくともここにいるWPFの達人にとっては):

私はItemsControlそれを保持するを持っていますがUserControl、複数ある場合もあれば、まったくない場合もあります (さらに作成したり、削除したりできるため)。私の中にCheckbox要素があるかどうかに応じて有効または無効になる外部が必要ItemsContolです(何もない場合は無効にします)。これは Command Validation で実行できると思いますが、私はこの世界に慣れていないので難しいようです。これはコードビハインドでも実行できますが、避けたいと思います。(それにバインドされたboolプロパティを定義するCheckboxように、次のように記述しますif(myItems.Count==0)

4

2 に答える 2

2

プロパティを ViewModelのプロパティにバインドSelectedItemし、これらのボタンを ViewModel のコマンドにバインドします。このようにして、状態データ (selectedItem) を ViewModel に保持し、それを使用して必要な追加のロジックを実行できるため、コード ビハインドが不要になります。

CheckBox の場合は、ViewModel に bool プロパティを配置し、アイテムを追加/削除するたびに通知します。

public bool HasItems {get {return Items.Any(); } }

public void AddItem()
{
    //...Add Items
    NotifyPropertyChanged("HasItems");
}

public void RemoveItem()
{
    //...Remove Item
    NotifyPropertyChanged("HasItems");
}

これにより、コンバータを追加する必要がなくなります。

于 2013-06-09T15:20:56.357 に答える