none
Dynamische Werte an eine DataGridTemplateColumn binden RRS feed

  • Frage

  • Salü zäme

    Ich habe in einem DataGridColumnTemplateColumn eine ComboBox, welche danamische ItemsSource-Werte aufweist.

            <DataGridTemplateColumn Header="AttributName" Width="150" IsReadOnly="False"
                        x:Name="AttributName"
                        Visibility="Visible">
              <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                  <TextBlock Text="{Binding Path=AttributName}"/>
                </DataTemplate>
              </DataGridTemplateColumn.CellTemplate>
              <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                  <ComboBox Name="AttributSpalteComoBox"
                       ItemsSource="{Binding Source={StaticResource propertyKey}}"
                       SelectedValue="{Binding Path=AttributName}"
                       DisplayMemberPath="Name" SelectedValuePath="Name">
                    <ComboBox.ItemsPanel>
                      <ItemsPanelTemplate>
                        <VirtualizingStackPanel />
                      </ItemsPanelTemplate>
                    </ComboBox.ItemsPanel>
                    <ComboBox.ItemTemplate>
                      <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                          <TextBlock Text="{Binding Path=Name}"/>
                          <TextBlock Text="{Binding Path=PropertyType}" />
                        </StackPanel>
                      </DataTemplate>
                    </ComboBox.ItemTemplate>
                  </ComboBox>
                </DataTemplate>
              </DataGridTemplateColumn.CellEditingTemplate>
            </DataGridTemplateColumn>
    Die Werte für ItemsSource ermittle ich im Code-Teil und beihnhaltet die Property einer gewählten Klasse.
    PropertyInfo[] oProp = typeKlasse.GetProperties(BindingFlags.GetProperty | BindingFlags.Public | BindingFlags.Instance);
    Ich habe versucht diese Werte mittels eines DataProviders in den XAML zu holen:
        <ObjectDataProvider x:Key="propertyKey" ObjectType="{x:Type local:PrintListeDefinition}" MethodName="GetProperty"/>Dies wäre wohl zu einfach gewesen, denn es funktioniert nicht.

    Dies wäre wohl zu einfach gewesen, denn es funktioniert nicht. Wenn ich die Klasse wechsle, die Property auslese, so kann ich diese veränderten daten nicht an den XAML-Code übergeben.
    Ich habe es versucht, der ComboBox im CellEditingTempate einen Name zu geben, um die ItemsSource über den Code zu laden. Doch auch das ist gescheitert, denn der Name der ComboBox wird im Code nicht erkannt.

    Weiss jemand Rat... wie ich diese dynamische Datenbindung an die ComboBox.ItemsSource hinkriege.

    Besten Dank und Gruss
    Jakob Brunner


    Jakob Brunner, Switzerland
    Freitag, 22. Oktober 2010 06:09

Alle Antworten

  • Wie es aussieht verwendest du Codebehind, sodass du über ein Binding an eine ObservableCollection im Codebehind die ItemSource setzen könntest.

    ItemsSource="{Binding Path=Properties}"
    
    public ObservableCollection<string> Properties
    ...
    
    
    
    Dienstag, 16. November 2010 10:33
    Beantworter