我非常感谢这个网站,您的专家以及强制活动的“游戏化”操作方式。当我出现在空中时,我会经历“无人接听”,但我很少找到足够简单的东西来回答...... :(
短版:
需要Datagrid显示不同类的格式化/模板列表......不同。
版本稍长:
窗口布局:
_______________________
| | |
| TreeView | DataGrid |
|__________|__________|
单击的TreeView节点确定DataGrid中显示的实体,并且每个类都有不同的列。
我只是想找出一种方法来显示DataGrid中基于类的每个列表(我的代码在点击时知道)。
恼人的长版:
使用TreeView(尽管使用HeirarchicalDataTemplate),每个“级别”可以根据它所代表的类显示,如:
<TreeView.Resources>
<HierarchicalDataTemplate
DataType="{x:Type local:Access_Group}"
ItemsSource="{Binding Path=Access_Lists}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
<HierarchicalDataTemplate
DataType="{x:Type local:Access_List}"
ItemsSource="{Binding Path=Object_Groups}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
[...]
......生活很美好。是的,我理解在这个简单的问题/场景中,DataGrid数据不是分层的。我只是粘贴上面作为我当前如何使用TreeView的示例,因此为DataGrid调用不同的类...(< em>如果这无意中混淆了这个问题,请忽略不计!)
但是使用WPF DataGrid,它(至少在我的情况下)只列出单个Entity / Class的实例(基于单击的TreeView节点)。并不是说上面的技术问题,点击电视的每个“层”意味着该特定类中的List需要在DataGrid中。相信我,听起来比实际困难。让我试试这个......
让我们将其用作类的代表性示例:
Class A
List of Class Bs
Class B
List of Class Cs
Class C
List of Class Ds
[...]
TreeView 逻辑:
Class A
Class B
Class A
Class B
Class B
Class C
Class B
Class A
Class B
Class C
Class C
[...]
行。现在不幸的是,类A,B,C,......都是非常不同的类,只有很少的“列”。这意味着我无法在DataGrid中使用单个模板来显示它们。
我会玩下面的任何一种(或者我现在无法想象的另一种方法):
可能不相关的注意事项:
我无法显示每个类/实体的所有列,因为它们在数据库中。我只需要用户的1/2列,用户对DataGrid中的数据唯一做的就是检查/取消选中2列(“已检查”和“活动”),并进行更新。在极少数情况下,会删除DG中的整行,但这是一个特殊情况,我可以在以后处理多种方式。
我研究的内容令人沮丧:
我可以使用WPF分层DataGrids,并调用正确的一个到堆栈顶部/可见,但这听起来很糟糕/可怕...必须有一个优雅的方式,我我希望你能提到任何指针,甚至是在单个DataGrid中显示不同类的实际经验...... :)请不要让我诉诸这个'胶带'解决方案/修复!!!