0

わかりました、これは私にも些細なことのように聞こえますが、私はこれに対する答えを見つけることができません。私は正常ComboBoxに動作します。

私がやりたいのは、element (の最後の項目としてdrop-down list)を追加 することです。これは、Addnewに他なりませんlabel。この項目を選択したら、追加するプロパティを定義できるウィンドウを開きたいと思いますelement

今私は次のものを持っています:

<ComboBox x:Name="myCombo"
    SelectedValue="{Binding Name, UpdateSourceTrigger=PropertyChanged}"
    ItemsSource="{Binding Definitions}" 
    SelectedValuePath="Name"
    DisplayMemberPath="Name"
    SelectionChanged="CheckToAdd" />

そして、CheckToAdd関数は次のようになります。

private void CheckToAdd(object sender, SelectionChangedEventArgs e)
{
    if (((myViewModel)e.AddedItems[0]).Name.Value.Equals("Add new"))
    {
        AddNewItem(sender, null);
    }
}

私がしているのは、Addnewasを持つダミーを自分 element中に持っていることです。このアプローチを使用すると、すべてが機能しますが、IMOは醜いです(問題は単なる問題であるため、 を台無しにするのは正しくないと思いますDefinitionsNameviewVM or the Model

誰かもっと良いアイデアがありますか?

4

3 に答える 3

2

AppendDataBoundItemsWPF用のASP.NETに相当するものはありません。ControlTemplateを変更することでどこかに到達できる場合があります。または、現在のアプローチを単純化して読みやすくすることもできます。何かのようなもの:

private void CheckToAdd(object sender, SelectionChangedEventArgs e) {
    if (cbo.SelectedIndex == Definitions.Count()) {
        AddNewItem(sender, null);
    }
于 2013-01-10T12:28:01.253 に答える
0

これは本当に受け入れられた答えへのコメントに属していると思いますが、私には不十分な担当者がいます。

詳細を教えてください:

  1. 「新規追加」で確実にする方法elementは一番下にあります。name
  2. Collectionダミーアイテムを追加しながら、モデルからViewModelをラップする方法。
于 2013-07-25T11:37:49.743 に答える
-2

wpfのバインディングに従う場合、コレクション(ここでは定義)にアイテムを挿入し、このコレクションに通知する必要があります(INotifyPropertyChangedを使用)。新しいアイテムが挿入されると、ComboBoxが自動的に更新されます。これは、これを行う1つの方法であるだけでなく、ベストプラクティスです。

INotifyPropertyChangedを実装する方法を見つけるための次のリンクを参照してください

http://wpftutorial.net/INotifyPropertyChanged.html

于 2013-01-10T12:21:02.570 に答える