Sunday, April 3, 2011

Does each row in a silverlight dataGrid have to have the same "RowDetailsTemplate"?

I'm defining a datagrid's RowDetailsTemplate in the following way:

RowDetailsTemplate="{StaticResource defaultTemplate}"

where

<UserControl.Resources>
    <DataTemplate x:Key="defaultTemplate">
        <StackPanel>
            <TextBlock Text="default" x:Name="_txt" />
        </StackPanel>
    </DataTemplate>
    <DataTemplate x:Key="otherTemplate">
        <StackPanel>
            <TextBlock Text="other" x:Name="_txt" />
        </StackPanel>
    </DataTemplate>
</UserControl.Resources>

Is there a way to programatically define which of the two above DataTemplates a given row is to use (perhaps in the LoadingRowDetails() event)?

From stackoverflow
  • You can add the following code in your LoadingRowDetails event, obviously replacing my useless If condition with your own:

        If 1 = 1 Then
            e.Row.DetailsTemplate = CType(Resources("defaultTemplate"), DataTemplate)
        Else
            e.Row.DetailsTemplate = CType(Resources("otherTemplate"), DataTemplate)
        End If
    
  • First: Thanks a lot Tom. It saved my day (week/month) :-)

    And in C#:

    
    if (1 == 1)
    {
       e.Row.DetailsTemplate = (DataTemplate) Resources["defaultTemplate"];
    }
    else
    {
       e.Row.DetailsTemplate = (DataTemplate) Resources["otherTemplate"];
    }
    

    To add more power to this solution the following msdn link shows how to create controls at runtime.

0 comments:

Post a Comment