簡體   English   中英

XAML:在集合內綁定集合

[英]XAML: Binding Collection inside of collection

我在使用itemsSource綁定到樹視圖集合的集合時遇到了困難。 最終,我在下面編寫了代碼liste,但仍然無法正常工作。

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集合。 我做錯了什么? 有更好的方法嗎? 如果可能的話,我想最小化代表代碼的大小。

問題,為什么Tuples沒有顯示在gui中,是因為Tuples不是屬性。 這是一個領域。 您需要更改聲明:

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

但是正如我在評論中所說,您應該重新考慮使用TreeView 一個簡單的ListView做同樣的事情。

好的,所以您忘記了“ Tuples”屬性上的getter / setter方法:

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

現在可以使用了,其他都沒問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM