2016-05-10 2 views
1

Как я могу получить недвижимость от этого:Как получить стоимость недвижимости от 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> 

Поскольку этот код ниже не работает, потому что я не имею свойства «Содержание», у меня есть только свойство «имя». Тогда как я могу получить стоимость от name?

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

Чтобы получить «TextBlock» внутри «ComboBox.ItemTemplate» и изменить его свойства в коде, вы должны использовать метод «FrameworkTemplate.FindName». Ответ на этот вопрос можно найти здесь: http://stackoverflow.com/questions/34117944/listbox-items-return-string-when-datatemplate-is-button –

ответ

0

Я понял.

Я использовал это:

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

Источник: How to get a property value based on the name

Тогда я просто использовать его так:

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

Он работает, спасибо всем за помощь.

Смежные вопросы