我在WPF MVVM应用程序中为屏幕提出了一个很棒的设计,现在在实现它时遇到了很多问题。
所以我有一个屏幕,我想显示一个大的数据绑定行列表。 数据以异步方式返回。
每行包含一个扩展器,因此看起来像
+ expander 1
+ expander 2
+ expander 3
+ expander 4
当用户向下滚动列表时,可以很好地加载新行。
现在对于部分,我不能做,当用户展开项目时,我想动态加载要在行的展开部分中显示的数据。
+ expander 1
<StackPanel>
<TextBlock/>
<TextBlock/>
<DataGrid/>
</StackPanel>
+ expander 2
+ expander 3
+ expander 4
所以展开的数据是显示更多的文本和子行
所以想到了 IsExpanded 的触发器,但不确定如何触发和返回要绑定在扩展器主体内的控件中的数据
有什么想法吗?
所以这样做的方法是:
-
创建一个类,比如说 ExpanderRowModel
-
为该类创建一个 DataTemplate,该模板显示扩展器(默认情况下是关闭的(,打开它时所有数据都在里面,绑定到相应的 ExpanderRowModel。
-
在视图模型中创建一个属性,该属性返回 ExpanderRowModel 的集合
-
将该集合绑定到列表视图或你喜欢的其他项控件中。