2013-03-19 124 views
1

我有一个组合框允许用户选择他们想要的选择。基于组合框的选择,我将显示与用户选择相关的字符串列表的列表框。在组合框中选择更改时动态更改列表框项目

示例:用户在组合框上选择“动物”,listBox将显示“猴子,马匹,猪”。

尝试使用最小编码(XAML驱动)创建此简单绑定,但无法使用1天。提前致谢!

编辑:

喜为有志于做另一种方式(仅使用XAML,并存储所有数据的一类),你可以通过Jehof中提供的链接检查出答案。这是一个相当简单的方法来实现这一点。

ListBox does not display the binding data

+1

发表您的当前XAML和代码。 – 2013-03-19 03:14:09

回答

2

下面是你在找什么一个简单的例子(让你开始)。

首先创建一个包含所有数据的对象,并将其绑定到ComboBox,使用组合框SelectedItem填充ListBox

代码:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     Categories.Add(new Category { Name = "Animals", Items = new List<string> { "Dog", "Cat", "Horse" } }); 
     Categories.Add(new Category { Name = "Vehicles", Items = new List<string> { "Car", "Truck", "Boat" } }); 

    } 

    private ObservableCollection<Category> _categories = new ObservableCollection<Category>(); 
    public ObservableCollection<Category> Categories 
    { 
     get { return _categories; } 
     set { _categories = value; } 
    } 
} 

public class Category 
{ 
    public string Name { get; set; } 
    public List<string> Items { get; set; } 
} 

的XAML:

<Window x:Class="WpfApplication10.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525" Name="UI"> 

     <StackPanel DataContext="{Binding ElementName=UI}"> 
      <ComboBox x:Name="combo" ItemsSource="{Binding Categories}" DisplayMemberPath="Name"/> 
      <ListBox ItemsSource="{Binding SelectedItem.Items, ElementName=combo}"/> 
     </StackPanel> 
</Window> 

结果:

enter image description hereenter image description hereenter image description here

+0

感谢您的及时回复,因为我倾向于不使用后面的代码来放入我的数据,我有一个用于存储所有数据的类。所以我遇到的问题是将我的listBox项目绑定到数据类中找到的字符串列表。 – Sheep 2013-03-19 03:58:58

+1

好吧,因为你从来没有提到或发布任何相关的代码,这是我可以做出你想要的最好的猜测,也许你应该把所有的需求添加到这个问题,以便别人可以帮助。 – 2013-03-19 04:36:06

+0

好,谢谢你,这是发布问题的解决方案。一旦我找到解决方案,就会发布解决方案 – Sheep 2013-03-19 05:14:16