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>

  1. Como vou carregar ItemSource a esta ComboBox dinamicamente com base em cada item selecionado no ListBox? Iam novo para WPF ... pls ajuda com suas valiosas sugestões.
Foi útil?

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
scroll top