2013-03-19 3 views
1

У меня есть comboBox, который позволяет пользователю выбирать нужный выбор. Основываясь на выборе comboBox, я бы отобразил listBox со списком строк, который связан с выбором пользователя.Изменение списка Элементы списка динамически при изменении выбора в comboBox

Пример: Пользователь выбирает «Животные» в comboBox, listBox отображает «Обезьяны, лошади, свиньи».

Пытается создать эту простую привязку с минимальным кодированием (управляемый XAML), но безрезультатно в течение 1 дня. Заранее спасибо!

Edit:

Привет для тех, кто заинтересован в этом это по-другому (используя только XAML и класс для хранения всех ваших данных) вы можете проверить ответ на Jehof в указанной ссылке. Это довольно простой способ добиться этого.

ListBox does not display the binding data

+1

разместим ваш текущий код XAML и код. –

ответ

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

+1

ну, так как вы никогда не упоминали об этом или не размещали какой-либо соответствующий код, это лучшее, что я мог бы сделать, чтобы вы хотели, возможно, вы должны добавить ВСЕ ваши требования к вопросу, чтобы кто-то еще мог помочь. –

+0

Благодарим вас, это решение поставленного вопроса. Выложите решение, как только я его найду – Sheep