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