C# 在wpf中将treeviewitem显示为网格行,其中分支的深度可能不同
我正在尝试创建一个树视图,每行包含大量列数据(例如,在我的示例中为2列,属性和值),类似于。与Heena提出的解决方案不同的是,树可能更复杂一些。每个分支的深度可能不同(因此在某些情况下,节点的子节点可能比其他节点多) 我将使用以下类实现代码,以便嵌套元素成为可能:C# 在wpf中将treeviewitem显示为网格行,其中分支的深度可能不同,c#,wpf,xaml,grid,treeviewitem,C#,Wpf,Xaml,Grid,Treeviewitem,我正在尝试创建一个树视图,每行包含大量列数据(例如,在我的示例中为2列,属性和值),类似于。与Heena提出的解决方案不同的是,树可能更复杂一些。每个分支的深度可能不同(因此在某些情况下,节点的子节点可能比其他节点多) 我将使用以下类实现代码,以便嵌套元素成为可能: public class TreeItem { private TreeItem() { } public TreeItem( string property, string value ) { if(
public class TreeItem
{
private TreeItem()
{
}
public TreeItem( string property, string value )
{
if( property == null )
{
property = string.Empty;
}
if( value == null )
{
value = string.Empty;
}
_property = property;
_value = value;
}
public TreeItem( params TreeItem[] items )
{
AddItems( items );
}
public TreeItem( string property, string value, params TreeItem[] items ) : this( property, value )
{
AddItems( items );
}
public string Property
{
get
{
return _property;
}
}
public string Value
{
get
{
return _value;
}
}
public IEnumerable<TreeItem> Items
{
get
{
return (IEnumerable<TreeItem>)_items;
}
}
private void AddItems( params TreeItem[] items )
{
foreach( TreeItem item in items )
{
if( item != null )
{
_items.Add( item );
}
}
}
private readonly string _property;
private readonly string _value;
private readonly List<TreeItem> _items = new List<TreeItem>();
}
公共类树项
{
私有TreeItem()
{
}
公共树项(字符串属性、字符串值)
{
if(属性==null)
{
property=string.Empty;
}
如果(值==null)
{
value=string.Empty;
}
_财产=财产;
_价值=价值;
}
公共树项(参数树项[]项)
{
补充项目(项目);
}
公共TreeItem(字符串属性、字符串值、参数TreeItem[]项):此(属性、值)
{
补充项目(项目);
}
公共字符串属性
{
得到
{
归还财产;
}
}
公共字符串值
{
得到
{
返回_值;
}
}
公共数字项目
{
得到
{
退货(IEnumerable)\项目;
}
}
私有无效附加项(参数树项[]项)
{
foreach(项目中的TreeItem项目)
{
如果(项!=null)
{
_项目。添加(项目);
}
}
}
私有只读字符串_属性;
私有只读字符串_值;
私有只读列表_items=new List();
}
有可能用WPF实现这一点吗?如果是,如何进行?
与手工创建树相比,修改datatemplate以附着数据并绑定到数据可能更容易。您的数据是如何结构化的?你能举一个数据的例子吗?有一个基于ASN1的通信协议。这些类是使用ASN1编译器自动创建的。从这些类中,我计划将子类实现为ViewModel,以从它们自己的属性中获取TreeItem。当数据来自TCP/IP时,解码器会自动将数据转换为这些ASN1对象,因此最终会自动生成树。谢谢!我可以把它和我的参考文章结合起来!成功了:-)