Wie ItemSource zu einem Comobox Innerhalb eines Datatemplate dynamisch einstellen?
-
06-07-2019 - |
Frage
Ich habe eine Listbox
und angewandter eine DataTemplate
wie diese
<ListBox>
<ListBox.ItemTemplate>
<Grid>
<TextBlock Text="{Binding Path=Name}" Grid.Row=0/>
<ComoboBox Name="test"
DisplayMemberPath="Country"
SelectedValuePath="Country_ID">
</Grid>
- Wie werde ich
ItemSource
dieserComboBox
laden dynamisch basierend auf jedes Element in derListBox
ausgewählt? Iam neu zu WPF ... pls hilft mit Ihren wertvollen Anregungen.
Lösung
<ListBox>
<ListBox.ItemTemplate>
<Grid>
<TextBlock Text="{Binding Path=Name}" Grid.Row=0/>
<ComoboBox Name="test"
DataContent="{Binding RelativeSource={RelativeSource AncestorType=ListBox}}"
ItemsSource="{Binding}"
DisplayMemberPath="Country"
SelectedValuePath="Country_ID">
</Grid>
Jetzt ist Ihre combocbox ist immer die gleiche Itemssource als Mutter listbox.
Andere Tipps
Eine Möglichkeit, dies zu tun, ist die Itemssource Ihres ComboBox an die SelectedValue Eigenschaft der List-Box zu binden. Dazu braucht die ListBox zu arbeiten, um eine Sammlung von Gegenständen gebunden sein, die eine Liste von Elementen enthalten, die die ComboBox binden.
<ListBox
x:Name="CategoryList"
ItemsSource="{Binding Path=MasterList,
RelativeSource={RelativeSource AncestorType=Window}}"
DisplayMemberPath="MasterProperty"
SelectedValuePath="Details"
/>
<ComboBox
ItemsSource="{Binding Path=SelectedValue, ElementName=CategoryList}"
DisplayMemberPath="DetailProperty"
Grid.Row="1"
/>
In diesem Beispiel habe ich hinter dem Fenster eine öffentliche Eigenschaft im Code erstellt, die eine Liste von Objekten, welche die Details der Sammlung aussetzt.
public List<Master> MasterList { get; set; }
public class Master
{
public string MasterProperty { get; set; }
public List<Detail> Details { get; set; }
}
public class Detail
{
public string DetailProperty { get; set; }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow