我正在填充我的WPF ComboBox
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设置一些不同的值。
答案 0 :(得分:4)
如果您要设置的值仅用于后端,而不显示给用户,则Tag属性可能是您最好的选择。
item.Tag = fx.FunctionValue;
答案 1 :(得分:2)
两个选项
您可以从ComboBoxItem创建派生类型,并在派生类型中定义属性。
您可以创建任意项目集合(使用您的自定义属性),并将ComboBox.ItemsSource设置为该集合,并将DisplayMemberPath设置为需要在Combobox中显示的字段。
答案 2 :(得分: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"); } } }
答案 3 :(得分:0)
var listItems = val.Split('$');
DataTemplate dt = new DataTemplate();
var combo = new FrameworkElementFactory(typeof(ComboBox));
combo.SetValue(ComboBox.ItemsSourceProperty, listItems);
combo.SetValue(ComboBox.SelectedValueProperty, "Whatever");
combo.SetBinding(ComboBox.SelectedValueProperty, new Binding("Value") { Source = mkvc });
dt.VisualTree = combo;
dt.Seal();
将此添加到编辑器模板中,无论您要将组合框添加到其中=>&gt; mkvc是一个用于保存数据的类
PropertyDefinition pd = new PropertyDefinition();
pd.EditorTemplate = dt;
//rpg =>radPropertyGrid
rpg.PropertyDefinitions.Add(pd);
rpg.Item = propertyList;
propertylist是myclass的列表