Posso definire CellTemplate di DataGrid come una risorsa in modo che possa essere riutilizzato in più colonne?
-
27-10-2019 - |
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?
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