2017-07-25 34 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顯示爲當前項目,但是一旦我顯示其他產品的詳細信息就會消失。

回答