2016-05-10 16 views
1

Wie kann ich Angebote von diesen:Wie bekomme ich den Eigenschaftswert von der ComboBox?

<ComboBox x:Name="cmbCategory" Grid.Column="1" Grid.Row="5" HorizontalAlignment="Center" PlaceholderText="Categories"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock TextWrapping="Wrap" Width="100%" Text="{Binding name}" /> 
      </StackPanel> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

Da dieser Code unten funktioniert nicht, weil ich ‚Inhalt‘ Eigenschaft nicht haben, ich habe nur ‚Name‘ Eigenschaft. Wie kann ich dann Wert von name Eigentum bekommen?

string categories= (cmbCategory.Items[cmbCategory.SelectedIndex] as ComboBoxItem).Content.ToString(); 
+1

Um einen 'TextBlock' innerhalb einer' ComboBox.ItemTemplate' zu ​​erhalten und seine Eigenschaften im Code zu ändern, sollten Sie 'FrameworkTemplate.FindName' Methode verwenden. Die Antwort auf diese Frage ist hier: http://stackoverflow.com/questions/34117944/listbox-items-return-string-when-datatemplate-is-button –

Antwort

0

Ich fand es heraus.

Ich habe diese:

 public object GetPropertyValue(object car, string propertyName) 
    { 
     return car.GetType().GetProperties() 
      .Single(pi => pi.Name == propertyName) 
      .GetValue(car, null); 
    } 

Quelle: How to get a property value based on the name

Dann wie, dass ich es einfach verwenden:

string categories= GetPropertyValue(cmbCategory.Items[cmbCategory.SelectedIndex], "name").ToString(); 

Es funktioniert, dankt allen für die Hilfe.

Verwandte Themen