Expression > Forums Home > Related Technologies Forums > Windows Presentation Foundation (WPF) > Changing Cell Template in a ListView programatically
Ask a questionAsk a question
 

AnswerChanging Cell Template in a ListView programatically

  • Tuesday, November 03, 2009 10:04 PMZetita Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Hi all,

    I´m working on an app. that uses TemplateResources to switch between differents ListViews according some conditions.
    And, due the string that appears in one of the cells of the selected listView, i have to change the cell template from this:

    <GridViewColumn >
                            <GridViewColumnHeader Content="Line Status" Tag="ReturnStatus.return_status_desc" Width="AUTO"/>
                                <GridViewColumn.CellTemplate>
                                   <DataTemplate>
                                       <Label Name="lineStatusLbl" Content="{Binding Path=ReturnStatus.return_status_desc}"/>
                                   </DataTemplate>
                            </GridViewColumn.CellTemplate>
    </GridViewColumn>

    To a Link:
    <GridViewColumn>
                            <GridViewColumnHeader Content="Line Status" Tag="ReturnStatus.return_status_desc" Width="AUTO" />
                            <GridViewColumn.CellTemplate>
                                <DataTemplate x:Key="sarasa">
                    <TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" Margin="0 15 0 15" Style="{StaticResource LinkButtonContainerStyle}">
                        <Hyperlink Name="lnkErrorsWarnings" Style="{StaticResource LinkButtonStyle}" IsEnabled="True">
                            <TextBlock Name="errorsWarningsText"
                                       Style="{StaticResource LinkButtonContainerStyle}"
                                       HorizontalAlignment="Left"
                                       VerticalAlignment="Center"                              
                                       Text="{Binding Path=ReturnStatus.return_status_desc}">
                            </TextBlock>
                        </Hyperlink>  
                    </TextBlock>
                </DataTemplate>
                            </GridViewColumn.CellTemplate>
    </GridViewColumn>

    Does anyone have any idea how to do it?

Answers

  • Wednesday, November 04, 2009 12:54 AMHomeroThompson Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     AnswerHas Code
    Hello,

    Use a DataTemplateSelector:

    <GridViewColumn CellTemplateSelector="{DynamicResource YourTemplateSelector}"/>
    More info:

    http://msdn.microsoft.com/en-us/library/system.windows.controls.datatemplateselector.aspx

    Good Luck.


All Replies

  • Wednesday, November 04, 2009 12:54 AMHomeroThompson Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     AnswerHas Code
    Hello,

    Use a DataTemplateSelector:

    <GridViewColumn CellTemplateSelector="{DynamicResource YourTemplateSelector}"/>
    More info:

    http://msdn.microsoft.com/en-us/library/system.windows.controls.datatemplateselector.aspx

    Good Luck.


  • Wednesday, November 04, 2009 1:00 PMZetita Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Has Code
    Yes, i finally found how to do it. I let my solution here, in case someone need to do something similar: First, i add two DataTemplates inside my grid_dataTemplate (Inside ListView.Resources):
    • Marked As Answer byZetita Wednesday, November 04, 2009 1:00 PM
    • Unmarked As Answer byZetita Wednesday, November 04, 2009 1:01 PM
    •