0

我有一个,像这样Listbox申请了一个DataTemplate

<ListBox>
   <ListBox.ItemTemplate>
<Grid>
 <TextBlock Text="{Binding Path=Name}" Grid.Row=0/>
    <ComoboBox Name="test"
            DisplayMemberPath="Country"
            SelectedValuePath="Country_ID">
</Grid>

  1. 我将如何根据在 中选择的每个项目动态加载ItemSource?我是 WPF 的新手...请帮助您提出宝贵的建议。ComboBoxListBox
4

2 回答 2

0

一种方法是将 ComboBox 的 ItemsSource 绑定到 ListBox 的 SelectedValue 属性。为此,ListBox 需要绑定到包含 ComboBox 将绑定到的项目列表的项目集合。

<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"
    />

在此示例中,我在窗口后面的代码中创建了一个公共属性,该属性公开了包含 Details 集合的对象列表。

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; }
}
于 2009-08-01T12:15:33.560 回答
0
<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>

现在您的组合框始终具有与父列表框相同的 itemssource。

于 2009-08-01T22:32:51.893 回答