WPF: Problem mit Werten innerhalb ComboBox Gridviewcolumn Bindungs
-
08-07-2019 - |
Frage
Meine Ansichten Datacontext ist mit zwei ObservableCollections Mitgliedern zu einer PresentationModel begrenzt. In der Ansicht habe ich ein Listview, die ItemSource zu gebunden ist, die erste ObservableCollection ist. In einer der LilstViews Spalte Ich mag Werte aus der zweiten obeservable Colletion in meinem PresentationModel präsentieren. Ich kann nicht herausfinden, wie die Werte aus der ObservableCollection in mein Combobox zu bekommen. Hat jemand eine Idee, wie dieses Problem zu lösen?
Lösung
Das erste, was Sie tun müssen, ist eine Datenvorlage erstellen Sie Ihre ComboBox enthält, in diesem Fall habe ich die Itemssource auf eine DependencyProperty auf dem Host-Fenster gebunden. Diese enthält das Präsentationsmodell, das die Eigenschaft hat, genannt ComboSource. SelectedValue hat gebunden worden ist, über die ListViewItem Datacontext, eine Eigenschaft, die den ausgewählten Wert hält.
<ListView.Resources>
<DataTemplate x:Key="comboBoxTemplate">
<ComboBox
ItemsSource="{Binding
Path=ModelData.ComboSource,
RelativeSource={RelativeSource AncestorType=Window}}"
SelectedValue="{Binding
Path=DataContext.Selection,
RelativeSource={RelativeSource AncestorType=ListViewItem}}"
DisplayMemberPath="Item"
SelectedValuePath="Id"
/>
</DataTemplate>
</ListView.Resources>
Dann müssen Sie dies aus der Celltemplate auf dem Gridviewcolumn
referenzieren<GridViewColumn
Header="Selection"
Width="160"
CellTemplate="{StaticResource comboBoxTemplate}"
/>