我有一个列出我所有产品的GridView。第一列是一个“GridViewToggleRowDetailsColumn”,它在单击时展开Details-View。CaliburnMicro + RowDetailsTemplate:Details-View消失
我用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无法找到视图,但我不知道为什么?因为我只有一个ProductDetailsViewModel?
另外:在调试模式下,我注意到“ProductDetailsViewModel”-getter在扩展行后每个项目只能访问一次。折叠和展开同一行不会再次访问getter。
UPDATE: 另一种方法,同样的效果:我说我的ItemsSource是ProductDetailsViewModel的收集和指挥<ProductDetailsViewModel
> .Collection.OneActive继承我MainViewModel,使电网与
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显示为当前项目,但是一旦我显示其他产品的详细信息就会消失。
仍然不是最终解决方案,因为“老”的观点不会被清理 – user3755567