XAMLのバインドに問題がありますが、自分では解決できません。私にはListView
とComboBox
があります。 ListView
のItemsSource
は、TabControl
のビューモデルにあり、ComboBox.ItemsSource
もあります。このコレクションにComboBox
をバインドするにはどうすればよいですか?ここでコンボボックスをタブのプロパティでListViewにバインドする
は、これまでのところ、私のコードです:
<ListView ItemsSource="{Binding ListViewSource}" SelectedItem="{Binding ListViewSelection}"
ItemTemplate="{DynamicResource ListViewTemplate}">
<ListView.View>
<GridView>
<GridViewColumn Header="...">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding ComboBoxSource}"
SelectedValue="{Binding ...}"
DisplayMemberPath="DisplayName"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn> // ...
そして、ここではTabViewModel
でItemsSource
性質のちょうど頭です:
public ObservableCollection<TypeViewModel> ComboBoxSource { get; set; }
public ObservableCollection<CostViewModel> ListViewSource { get; set; }
それは、このプロパティにCombBox.ItemsSource
をバインドすることは可能ですか?
との結合、
window
に名前を与える: 'のItemsSource =」 {DataContext.ComboBoxSource、RelativeSource = {RelativeSource AncestorType = ListView}}をバインドします。 –相対的なソースは、前のコメントごとに、あなたが望むことを行うことができます。残念ながら、あなたの質問は 'ListView'のすべての項目が同じドロップダウンを持つ理由を明確にしていませんが、何らかの理由で相対的な方法があなたのニーズに合わない場合、それぞれの' TypeViewModel親ビューモデル(例えば 'ComboBoxSource {get {return _parentViewModel.ComboBoxSource;}}')に委譲する独自の 'ComboBoxSource'プロパティを公開するか、これらの値の起源に応じて、おそらくシングルトンにします。 –
残念なことに、これは私のためにはうまくいかなかったが、私はKMChoが答えのセクション{Binding ElementName = ControlName、Path = DataContext.ComboBoxSourceでそれを説明した方法を今解決した。 } – stl