2010-07-27 4 views
1

В настоящее время я экспериментирую с WPF. Одна вещь, которую я хотел сделать, - это мастер, чтобы подробно выбирать выбор из нескольких списков со списком. У меня есть ViewModel с элементами GroupItems, которые я использую как ItemSource для первого combobox. Эти объекты GroupItems имеют свойство Childs, которое включает в себя список элементов, принадлежащих этой группе.Привязка к свойству SelectedItem

Я не могу найти способ привязать comboBox1.SelectedItem.Childs как Itemource для второго comboBox.

Прямо сейчас я только получил

ItemsSource="{Binding ElementName=comboBox1, Path=SelectedItem}" 

Но я не получаю собственностью SelectedItem. Как это может быть сделано? Или это не способ WPF?

Есть ли хороший сайт, чтобы узнать, как выбрать различные элементы? Eplaining Path, XPath, Source и все такое?

Спасибо за любую помощь.

ответ

2

Ваша привязка выше не пытается привязать к Childs, только SelectedItem.

попробовать что-то вроде этого:

Window1.xaml

<Window x:Class="WpfApplication5.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"> 
    <StackPanel> 
     <ComboBox x:Name="_groups" ItemsSource="{Binding Groups}" DisplayMemberPath="Name"/> 
     <ComboBox ItemsSource="{Binding SelectedItem.Items, ElementName=_groups}"/> 
    </StackPanel> 
</Window> 

Window1.xaml.cs

using System.Windows; 

namespace WpfApplication5 { 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : Window { 
     public MainWindow() { 
      InitializeComponent(); 

      var model = new ViewModel(); 

      var g1 = new Group { Name = "Group1" }; 
      g1._items.Add("G1C1"); 
      g1._items.Add("G1C2"); 
      g1._items.Add("G1C3"); 
      model._groups.Add(g1); 

      var g2 = new Group { Name = "Group2" }; 
      g2._items.Add("G2C1"); 
      g2._items.Add("G2C2"); 
      g2._items.Add("G2C3"); 
      model._groups.Add(g2); 

      var g3 = new Group { Name = "Group3" }; 
      g3._items.Add("G3C1"); 
      g3._items.Add("G3C2"); 
      g3._items.Add("G3C3"); 
      model._groups.Add(g3); 

      DataContext = model; 
     } 
    } 
} 

ViewModel.cs

using System; 
using System.Collections.Generic; 

namespace WpfApplication5 
{ 
    public class Group { 
     internal List<String> _items = new List<string>(); 
     public IEnumerable<String> Items { 
      get { return _items; } 
     } 
     public String Name { get; set; } 
    } 
    public class ViewModel 
    { 
     internal List<Group> _groups = new List<Group>(); 
     public IEnumerable<Group> Groups 
     { 
      get { return _groups; } 
     } 
    } 
} 
+0

Спасибо Я была такая же проблема и это решение сработало. – Paparazzi

Смежные вопросы