Customizing Automatisch Generierten Spalten im DataGrid-Steuerelement

Nach dem Lesen der exzellenten Artikel auf, wie Anpassen Von Automatisch Generierten Spalten, ich habe ein Problem.

Beim Versuch zum anpassen von automatisch generierten Spalten in einer DataGrid kontrollieren, ich möchte, einfache Dinge zu tun wie stellen Sie sicher, dass alle numerischen Werte in der Spalte werden rechts ausgerichtet. Zu diesem Zweck habe ich eine DataTemplate wie folgt:

<DataGrid x:Name="MyGrid" AutoGeneratingColumn="MyGrid_AutoGeneratingColumn">
  <DataGrid.Resources>
    <DataTemplate x:Key="IntegerTemplate">
      <TextBlock Text="{Binding}" HorizontalAlignment="Right"/>
    </DataTemplate>
  </DataGrid.Resources>
</DataGrid>

Dann, in der AutoGeneratingColumn DataGrid event-handler, will ich weisen Sie dieses generischen DataTemplate als CellTemplate für alle Integrale (d.h., die numerische Spalten):

public void MyWindow_AdjustColumnTemplateBasedOnType(
              DataGridAutoGeneratingColumnEventArgs e)
{
  if (/*This is a column I want to change*/)
  {
    DataGridTemplateColumn column=new DataGridTemplateColumn(); 

    column.Header=e.PropertyName;
    column.CellTemplate=MyGrid.FindResource("IntegerTemplate") as DataTemplate; 
    e.Column=column; 
  }
}

Das problem ist, dass der Wert der Text Spalte der TextBlock nicht die gewünschten Ergebnisse angezeigt werden. Statt zu sehen, die Rechtsbündig Wert in jeder Zelle, deren Spalte hat dieses DataTemplate als seine CellTemplate sehe ich:

Customizing Automatisch Generierten Spalten im DataGrid-Steuerelement

Mithilfe der leere bindungssyntax verwendet, indem das Attribut Text zu "{Binding}" ist offensichtlich falsch. Einstellung einen Pfad basierend Bindung nicht produzieren das gewünschte Ergebnis. Das heißt, wenn ich einen (hart-kodierten Daten Weg) - Bindung mit so etwas wie:

  <DataGrid.Resources>
    <DataTemplate x:Key="IntegerTemplate">
      <!-- Binding hard set to ProductId -->
      <TextBlock Text="{Binding ProductId}" HorizontalAlignment="Right"/>
    </DataTemplate>
  </DataGrid.Resources>

Dann ist alles gut, aber meine generic DataTemplate ist nicht mehr generisch. Anstatt dass es wiederverwendbar für alle integer-Spalten, es kann nur verwendet werden, für die ProductId Spalte, da die Bindung ist fest auf den Wert des bestimmten Daten-Postens:

Customizing Automatisch Generierten Spalten im DataGrid-Steuerelement

Was ist die richtige Bindung sollte ich verwenden, so dass die generische DataTemplate tatsächlich verwendet, was Wert ist in der entsprechenden ItemSource - Eigenschaft für die Spalte mit dem es verbunden ist.

  • Michael Goldshteyn :ich habe das gleiche problem,Hast du eine Lösung finden?
Schreibe einen Kommentar