Caliburn Micro + RowDetailsTemplate:详细信息视图消失
Posted
技术标签:
【中文标题】Caliburn Micro + RowDetailsTemplate:详细信息视图消失【英文标题】:CaliburnMicro + RowDetailsTemplate: Details-View disappears 【发布时间】:2017-12-31 07:48:10 【问题描述】:我有一个列出我所有产品的 GridView。第一列是“GridViewToggleRowDetailsColumn”,单击时展开详细信息视图。
我使用 CaliburnMicro 来加载详细信息视图,如下所示:
<telerik:RadGridView ItemsSource="Binding Products.View"
SelectedItem="Binding SelectedProduct,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged"
AutoGenerateColumns="False"
EnableRowVirtualization="False"
ShowGroupPanel="False"
RowDetailsVisibilityMode="Collapsed"
RowIndicatorVisibility="Collapsed"
cal:Message.Attach="[Event RowDetailsVisibilityChanged] =
[Action OnRowDetailsVisibilityChanged($eventArgs)]">
<telerik:RadGridView.RowDetailsTemplate>
<DataTemplate>
<ContentControl cal:View.Model="Binding DataContext.ProductDetailsViewModel, RelativeSource=RelativeSource FindAncestor, AncestorType=telerik:RadGridView" />
</DataTemplate>
</telerik:RadGridView.RowDetailsTemplate>
<telerik:GridViewToggleRowDetailsColumn />
...Columndefinitions...
</telerik:RadGridView>
只要我停留在同一个产品上,我就可以打开和关闭详细信息。如果我打开详细信息而另一个详细信息已经可见,则会出现问题。然后第一个细节消失了,再也没有回来。看截图:
灰色框是详细信息的占位符。我依次打开了前8项的详细信息,但只显示了最后一项。我的猜测是 Caliburn Micro 无法再找到 View,但我不知道为什么?因为我只有一个 ProductDetailsViewModel?
另外:在调试模式下,我注意到“ProductDetailsViewModel”-getter 在展开行后每个项目仅访问一次。折叠和展开同一行不会再次访问 getter。
更新:
另一种方法,同样的效果:我说我的 ItemsSource 是 ProductDetailsViewModel 的集合,并从 Conductor<ProductDetailsViewModel
>.Collection.OneActive 继承我的 MainViewModel,使 Grid 绑定与
ItemsSource = "Binding Items"
在 xaml 中
<ContentControl cal:View.Model="Binding DataContext.ActiveItem, RelativeSource=RelativeSource FindAncestor, AncestorType=telerik:RadGridView" />
在我所做的 SelectionChanged 中
ActivateItem(e.Row.Item as ProductDetailsViewModel);
和以前一样,ProductDetailsView 显示当前项目,但一旦我显示另一个产品的详细信息就会消失。
【问题讨论】:
【参考方案1】:问题在于“IViewAware”的视图缓存,它是由屏幕自动实现的。覆盖 ProductDetailsViewModel 中的“GetView”解决了这个问题。
相关:Screens shared in multiple screens disappear after deactivation in Caliburn.Micro
【讨论】:
仍然不是最终解决方案,因为“旧”视图不会被清理以上是关于Caliburn Micro + RowDetailsTemplate:详细信息视图消失的主要内容,如果未能解决你的问题,请参考以下文章
WPF MVVM(Caliburn.Micro+Metro)-配置Caliburn.Micro
Caliburn.Micro框架之Action Convertions