Posso definire CellTemplate di DataGrid come una risorsa in modo che possa essere riutilizzato in più colonne?

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

Domanda

Voglio un modello specifico per tutte le mie colonne in DataGrid.Il metodo usuale è che replicherò l'intero XAML per DataTemplate più volte nel DataGrid in ciascuna colonna.

Esiste un modo per definire il CellTemplate a livello globale come una risorsa e quindi passarvi semplicemente la proprietà "Path" di "Binding", in modo che visualizzi l'elemento corretto dal DataContext?

È possibile?

È stato utile?

Soluzione

Crea DataTemplate nel file App.Xaml con chiave / 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>

Ora puoi usare questo modello in DataGrid come

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

OPPURE
Puoi passare il nome del percorso di associazione nel codice dietro come ...

        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;

Spero che questo possa aiutare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top