Como definir ItemSource a um Comobox Dentro de um DataTemplate dinamicamente?
-
06-07-2019 - |
Pergunta
Eu tenho um Listbox
e aplicado um DataTemplate
como este
<ListBox>
<ListBox.ItemTemplate>
<Grid>
<TextBlock Text="{Binding Path=Name}" Grid.Row=0/>
<ComoboBox Name="test"
DisplayMemberPath="Country"
SelectedValuePath="Country_ID">
</Grid>
- Como vou carregar
ItemSource
a estaComboBox
dinamicamente com base em cada item selecionado noListBox
? Iam novo para WPF ... pls ajuda com suas valiosas sugestões.
Solução
<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>
Agora, o seu combocbox é sempre o mesmo itemssource como a caixa de listagem pai.
Outras dicas
Uma maneira de fazer isso é ligar o ItemsSource de sua caixa de combinação para a propriedade SelectedValue do ListBox. Para que isso funcione as necessidades de caixa de listagem a ser ligado a uma coleção de itens que contém uma lista de itens que a caixa de combinação irá se ligam a.
<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"
/>
Neste exemplo eu criei uma propriedade pública no código por trás da janela que expõe uma lista de objetos que contêm a coleção detalhes.
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; }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow