2013-03-19 125 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