Puis-je définir CellTemplate de DataGrid en tant que ressource afin qu'il puisse être réutilisé dans plusieurs colonnes?

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

Question

Je veux un modèle spécifique pour toutes mes colonnes DataGrid. La méthode habituelle est que je vais répliquer l'intégralité de XAML pour DataTemplate plusieurs fois dans le DataGrid dans chacune des colonnes.

Est-il possible que je peux définir la CellTemplate globalement comme une ressource, puis juste passer la propriété « Path » de « liaison » à lui, afin qu'il affiche l'élément correct du DataContext?

Est-ce possible?

Était-ce utile?

La solution

Créer DataTemplate dans le fichier app.xaml avec clé / nom.

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

Vous pouvez maintenant utiliser ce modèle dans DataGrid comme

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

OU
Vous pouvez passer Binding nom de chemin dans le code derrière comme ...

        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;

Espérons que cela aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top