C# 基于反射获得的对象构建树状视图
有必要以树的形式显示元素,如图所示。对象本身是在编译时创建的 以这种形式进行的尝试C# 基于反射获得的对象构建树状视图,c#,wpf,reflection,proxy,C#,Wpf,Reflection,Proxy,有必要以树的形式显示元素,如图所示。对象本身是在编译时创建的 以这种形式进行的尝试 <TreeView Grid.Row="1" Grid.Column="0" ItemsSource="{Binding LanguageInformation.Items}"> <TreeView.ItemContainerSt
<TreeView
Grid.Row="1"
Grid.Column="0"
ItemsSource="{Binding LanguageInformation.Items}">
<TreeView.ItemContainerStyle>
<Style TargetType="{x:Type TreeViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
</TreeView.ItemContainerStyle>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:LocalizationBrowserViewModel}" ItemsSource="{Binding LanguageInformation.Items}">
<TextBlock Text="{Binding}"/>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
演讲课
public class Element
{
public string Name { get; set; }
public ObservableCollection<object> Items { get; set; }
public Element()
{
this.Items = new ObservableCollection<object>();
}
}
公共类元素
{
公共字符串名称{get;set;}
公共ObservableCollection项{get;set;}
公共元素()
{
this.Items=新的ObservableCollection();
}
}
元素类现在只允许一级层次结构。要支持N个级别,需要按如下方式更改元素
类
公共类元素
{
公共字符串名称{get;set;}
公共ObservableCollection项{get;set;}
公共元素()
{
this.Items=新的ObservableCollection();
}
}
TreeView
需要替换为ListView
,因为问题中提供的屏幕截图包含多个列TreeView
不允许多列,但允许一个ListView
WPF中的
ListView
支持HierarchycalDataTemplate
。您可以参考实施。谢谢。考虑到对象是代理,如何正确创建视图?如何在名称字段中输入数据?这里是另一个更新的屏幕截图。还有更多。我通过帮助反射获得对象(像对象一样键入)。这个对象在编译时会得到它的类型。屏幕截图中的代理包含一个对象实例。您可以使用反射更新这些属性的值。您能解释一下如何做到这一点吗?同时,是否可以将此对象显示为树?您可以通过查看反射样本。此外,还必须使用反射创建ViewModel集合以绑定ListView。