combobox
パターンを使用してObservableコレクションをバインドしています。combobox
にバインドできますが、今はビュー内でSelectedItem
プロパティを取得する方法を探していますモデル(私は単にそれを呼び出すことはできませんパターンを制動しているので)私がそれを描写する方法は、選択された項目を指し、後で私のビューモデルで使用することができるXAML
でバインディングを作成する方法がなければならないということです。私が把握できないのはどういうことか...MVVMを使用してWPFコンボボックスのSelectedItemプロパティを取得する
私はこれをどのように達成することができますか?
XAML
<ComboBox SelectedIndex="0" DisplayMemberPath="Text" ItemsSource="{Binding Path=DocumentTypeCmb,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Grid.Column="1" Grid.Row="4" Margin="0,4,5,5" Height="23"
HorizontalAlignment="Left" Name="cmbDocumentType" VerticalAlignment="Bottom"
Width="230" />
コード
//Obesrvable collection property
private ObservableCollection<ListHelper> documentTypeCollection = new ObservableCollection<ListHelper>();
public ObservableCollection<ListHelper> DocumentTypeCmb
{
get
{
return documentTypeCollection;
}
set
{
documentTypeCollection = value;
OnPropertyChanged("DocumentTypeCmb");
}
}
//Extract from the method where i do the binding
documentTypeCollection.Add(new ListHelper { Text = "Item1", IsChecked = false });
documentTypeCollection.Add(new ListHelper { Text = "Item2", IsChecked = false });
documentTypeCollection.Add(new ListHelper { Text = "Item3", IsChecked = false });
DocumentTypeCmb = documentTypeCollection;
//Helper class
public class ListHelper
{
public string Text { get; set; }
public bool IsChecked { get; set; }
}
パーフェクト非常 –
+1をありがとう、しかしのItemsSourceを設定するときにモード=双方向を取り除くください! - ちょうど意味をなさない。 – blindmeis
@blindmeis - それは非常に真実です、私は単にOPのサンプルからその部分をコピー/ペーストしました。それはデフォルトのバインディングモードかもしれませんが、明示的に指定するのは完全に*悪い*ではありません - 少なくとも他の開発者はコードを読んで何が起こっているのか疑いがないでしょう(前のWPFコードは、新しい開発者には手がかりはなかった)。 – slugster