Posso definir CellTemplate de DataGrid como um recurso para que possa ser reutilizado em várias colunas?

StackOverflow https://stackoverflow.com/questions/8354650

Pergunta

Quero um modelo específico para todas as minhas colunas no DataGrid.O método usual é replicarei todo o XAML para DataTemplate várias vezes no DataGrid em cada coluna.

Existe alguma maneira de definir o CellTemplate globalmente como um recurso e, em seguida, apenas passar a propriedade "Path" de "Binding" para ele, para que ele exiba o item correto do DataContext?

Isso é possível?

Foi útil?

Solução

Crie DataTemplate no arquivo App.Xaml com chave / nome.

 <DataTemplate x:Name="myTemplate" TargetType="sdk:DataGridTemplateColumn">
                <StackPanel Orientation="Horizontal">
                    <TextBox Text="{Binding FirstName}" BorderThickness="0"/>
                    <TextBox Text="{Binding LastName}" BorderThickness="0"/>
                </StackPanel>
  </DataTemplate>

Agora você pode usar este modelo em DataGrid como

 <sdk:DataGridTemplateColumn Header="Name" CellTemplate={StaticResource myTemplate}>

OU
Você pode passar o nome do Binding Path no código, como ...

        string colPath = "FirstName";
        DataGrid grid = new DataGrid();
        grid.ItemsSource = myViewModel.EmpCollection;

        DataGridTemplateColumn column = new DataGridTemplateColumn();
        DataTemplate itemTemplate = (DataTemplate)XamlReader.Load("<DataTemplate xmlns=\"http://schemas.microsoft.com/client/2007\"> <ContentPresenter Content=\"{Binding Path=" + colPath + "}\"  /></DataTemplate>");

        column.CellTemplate = itemTemplate;
        grid.Columns[0] = column;

Espero que isso ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top