Search code examples
c#wpfbindingcontentcontrolrowdetailstemplate

CaliburnMicro Binding View inside RadGridView.RowDetailsTemplate


I have a RadGridView with a GridViewToggleRowDetailsColumn, which can expand a selected item and show more Details. I want to use CaliburnMicro to Display the DetailsView, so I add a property of the DetailsViewModel to my "MainViewModel" and add a ContentControl with a Binding to it.

 <telerik:RadGridView ItemsSource="{Binding Products.View}"
             SelectedItem="{Binding SelectedProduct}"  ... > 

            <telerik:RadGridView.RowDetailsTemplate>
                <DataTemplate>
                    <ContentControl cal:View.Model="{Binding ProductDetailsViewModel}" />
                </DataTemplate>
            </telerik:RadGridView.RowDetailsTemplate>


            <telerik:RadGridView.Columns>
                <telerik:GridViewToggleRowDetailsColumn />

                ...Columndefinitions...

            <telerik:RadGridView.Columns>                   
        </telerik:RadGridView>

The problem is, that the Details are not displayed. From here I read that the binding fails because of the ItemsSource. So i tried

<ContentControl cal:View.Model="{Binding ProductDetailsViewModel, RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}" />

but it still does not work.


Solution

  • If the ProductDetailsViewModel property is the defined in the same class as the Products property that the RadGridView is bound to, try this:

    <ContentControl cal:View.Model="{Binding DataContext.ProductDetailsViewModel, RelativeSource={RelativeSource FindAncestor, AncestorType=telerik:RadGridView}}" />