2017-07-25 29 views
0

我有一个列出我所有产品的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> 

我可以开,只要我留在同一产品关闭详细信息。如果我打开详细信息而另一个详细信息已经可见,则会出现问题。然后第一个细节消失,永远不会回来。见屏幕截图: Image

灰色框是一个占位符的细节。我先后打开了前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显示为当前项目,但是一旦我显示其他产品的详细信息就会消失。

回答