[英]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.