Kann ich CellTemplate von DataGrid als Ressource definieren, damit es in mehreren Spalten wiederverwendet werden kann?

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

Frage

Ich möchte eine bestimmte Vorlage für alle meine Spalten in DataGrid.Die übliche Methode ist, dass ich die gesamte XAML für DataTemplate mehrmals im DataGrid in jeder Spalte repliziere.

Gibt es eine Möglichkeit, das CellTemplate global als Ressource zu definieren und ihm dann einfach die Eigenschaft "Pfad" von "Bindung" zu übergeben, damit das richtige Element aus dem DataContext angezeigt wird?

Ist das möglich?

War es hilfreich?

Lösung

Erstellen Sie DataTemplate in der App.Xaml-Datei mit Schlüssel / Name.

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

Jetzt können Sie diese Vorlage in DataGrid wie verwenden

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

ODER
Sie können den Namen des Bindungspfads im Code wie ... übergeben

        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;

Hoffe, das wird helfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top