コレクションがあるコレクションがあります
最初の行には 2 つの ListView があり、2 番目は最初の子です。
最初の ListView は、2 番目と同じ情報を表示しません。
TreeView で同じことをしたいのですが、それがわかりません。
私が言えることから、TreeView のすべてのレベルは同じ情報を提示する必要があります
私が欲しいのは、レベルが同じでない場所を確認する TreeView です
私が欲しいのは、2番目のListViewが最初のListViewのどこにあるか
です
答えがMVVMでこれを行うことができる場合、MVVMを学ぶ別の正当な理由はありますか?
MVVMなしでそれを行うことはできますか?
<Window x:Class="TreeView.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:System="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:TreeView"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="2*"/>
<RowDefinition Height="3*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ListView x:Name="lvFamilies" Grid.Row="0" Grid.Column="0"
ItemsSource="{Binding}" DisplayMemberPath="Information"/>
<ListView x:Name="lvChildren" Grid.Row="0" Grid.Column="1"
ItemsSource="{Binding ElementName=lvFamilies, Path=SelectedItem.Children}" DisplayMemberPath="Name"/>
<TreeView x:Name="tvFamilies" Grid.Row="1" Grid.ColumnSpan="2"
ItemsSource="{Binding}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}" DataType="{x:Type local:iLimitedTreeView}">
<CheckBox IsChecked="True" Click="CheckBox_Click">
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</CheckBox>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</Grid>
</Window>
namespace TreeView
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<Family> Families = new List<Family>();
Families.Add(new Family("uncle enrie", new List<string>() {"cousin sal", "niece all"}));
Families.Add(new Family("aunt harriet", new List<string>() { "cousin jim", "cousin bob" }));
Families.Add(new Family("aunt nanacy", new List<string>() { "cousin art", "cousin jhonny", "niece amy", "niece sarah" }));
lvFamilies.ItemsSource = Families;
tvFamilies.ItemsSource = Families;
}
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
System.Diagnostics.Debug.WriteLine("CheckBox_Click");
}
}
public class person : iLimitedTreeView
{
public string Name { get; set; }
public person(string name) { Name = name; }
}
public class Family : iLimitedTreeView
{
public string Name { get { return Parent.Name; } }
public person Parent { get; set; }
public string Information
{
get
{
return Name + " " + Children.Count.ToString();
}
}
public List<person> Children { get; set; }
public Family(string parent, List<string> children)
{
Parent = new person(parent);
Children = new List<person>();
foreach (string s in children) { Children.Add(new person(s)); }
}
}
public interface iLimitedTreeView
{
string Name { get; }
}
}