2012-05-21 3 views
0

Я заселение моего WPF ComboBox как этогоКак установить значение WPF ComboBox элемента из C# код

foreach (Function fx in XEGFunctions.GetAll()) 
{ 
    ComboBoxItem item = new ComboBoxItem(); 
    item.Content = fx.Name; 
    item.ToolTip = fx.Signature;    
    //item.(some property) = fx.FunctionValue; 
    cmbBoxTransformation.Items.Add(item); 
} 
cmbBoxTransformation.SelectedIndex = 0; 

Как я могу установить некоторое другое значение каждого ComboBoxItem.

ответ

4

Если значение, которое вы хотите установить, используется только в задней части и не отображается пользователю, свойство Tag, вероятно, будет вашим лучшим выбором.

item.Tag = fx.FunctionValue; 
+0

Но если я имею значение со мной, я хочу показать соответствующег ng Элемент, выбранный во время выполнения, чье значение это (некоторый текст), тогда я думаю, что он не будет работать – Abhi

+0

Вы можете использовать запрос linq, чтобы найти его довольно быстро, я не совсем понимаю, что вы пытаетесь сделать с вашего вопрос, хотя – Developer

+0

Хорошо, я буду перебирать запрос LINQ, чтобы выбрать элемент, значение которого у меня есть во время выполнения – Abhi

2

два варианта

  1. Вы можете создать производный тип из ComboBoxItem, и определяют свойства в производном типе.

  2. Вы можете создать произвольную коллекцию элементов (с вашими настраиваемыми свойствами) и установить ComboBox.ItemsSource для этой коллекции и DisplayMemberPath в поле, которое должно отображаться в Combobox.

Binding combobox to display source and binding source

How SelectedValue and DisplayMemberPath saved my life

1

этот маленький клещ может поможет кому-то

<ComboBox SelectedIndex="1" SelectedValuePath="Tag" SelectedValue="{Binding SampleDept,Mode=OneWayToSource}" > 
           <ComboBoxItem Content="8-bit" Tag="8" ></ComboBoxItem> 
           <ComboBoxItem Content="16-bit" Tag="16" ></ComboBoxItem> 
           <ComboBoxItem Content="24-bit" Tag="24"></ComboBoxItem> 
           <ComboBoxItem Content="32-bit" Tag="32"></ComboBoxItem> 
          </ComboBox> 
public class SampleModel{ 

    public int SampleDept{ 

      get { return _sampleDept; } 
      set { 

       _sampleDept = value; 
      OnPropertyChanged("SampleDept"); 
      } 
     } 
}