XAML:集合内的绑定集合

时间:2015-04-17 14:41:48

标签: c# xml wpf xaml

使用itemsSource绑定到树视图集合时遇到困难。最终我在下面编写了代码,但它仍然不起作用。

MainWindows.xaml:

<Window x:Class="WpfApplication1.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>
        <Button Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Click="ButtonBase_OnClick"/>
            <TreeView Name="TreeView" VerticalAlignment="Top">
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate>
                    <StackPanel>
                        <TextBlock Text="{Binding Name}"></TextBlock>
                        <ItemsControl ItemsSource="{Binding Tuples}" >
                            <ItemsControl.ItemTemplate>
                                <DataTemplate>
                                    <TextBlock Text="{Binding Item1}"/>
                                </DataTemplate>
                            </ItemsControl.ItemTemplate>
                        </ItemsControl>
                    </StackPanel>
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
    </StackPanel>
</Window>

和MainWindows.xaml.cs:

    public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    public ObservableCollection<Person> Col { get; set; }

    private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
    {
        var Trades = new ObservableCollection<Person>
                         {   
                             new Person()
                                 {
                                     Tuples = new List<Tuple<string,string>>()
                                         {
                                             new Tuple<string, string>("Peter1", "Adam1"),
                                             new Tuple<string, string>("Peter2", "Adam2"),
                                             new Tuple<string, string>("Peter3", "Adam3")
                                         },
                                      Name = "MyName"
                                 },

                                  new Person()
                                 {
                                     Tuples = new List<Tuple<string,string>>()
                                         {
                                             new Tuple<string, string>("Peter1", "Adam1"),
                                             new Tuple<string, string>("Peter2", "Adam2"),
                                             new Tuple<string, string>("Peter3", "Adam3")
                                         },
                                         Name = "MyName2"
                                 }
                         };

        TreeView.ItemsSource = Trades; // Why it's not working ?
    }
}

public class Person
{
    public string Name { get; set; }
    public IEnumerable<Tuple<string, string>> Tuples;
}

属性名称Person的名称正确显示但是Person的IEnumerable集合根本没有显示。我做错了什么?有没有更好的做到这一点?如果可能的话,我想代表代码隐藏最小化代码的大小。

2 个答案:

答案 0 :(得分:1)

问题,为什么Tuples没有显示在gui中,Tuples不是属性。这是一个领域。您需要更改声明:

public IEnumerable<Tuple<string, string>> Tuples{get;set;}

但正如我在评论中所说,你应该重新考虑使用TreeView。一个简单的ListView做同样的事情。

答案 1 :(得分:0)

好的,所以你忘记了“Tuples”属性的getter / setter:

public IEnumerable<Tuple<string, string>> Tuples { get; set; }

现在可以使用,其他一切都可以。

相关问题