如何从C#代码设置WPF组合框项的值

如何从C#代码设置WPF组合框项的值,c#,.net,wpf,xaml,controls,C#,.net,Wpf,Xaml,Controls,我像这样填充我的WPF组合框 foreach (Function fx in XEGFunctions.GetAll()) { ComboBoxItem item = new ComboBoxItem(); item.Content = fx.Name; item.ToolTip = fx.Signature; //item.( some property ) = fx.FunctionValue; cmbBoxTransfo

我像这样填充我的WPF组合框

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设置不同的值。

如果您要设置的值仅用于后端,而不显示给用户,则Tag属性可能是您的最佳选择

item.Tag = fx.FunctionValue;
两种选择

  • 您可以从ComboBoxItem创建派生类型,并在派生类型中定义属性

  • 您可以创建任意项集合(使用自定义属性),并将ComboBox.ItemsSource设置为该集合,将DisplayMemberPath设置为需要在ComboBox中显示的字段


  • 这只小虱子可能会帮助别人

    <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>
    
    将此添加到编辑器模板中,您可以将combobox添加到其中=>mkvc是一个用于保存我的数据的类

    PropertyDefinition pd = new PropertyDefinition();
    pd.EditorTemplate = dt;
    //rpg =>radPropertyGrid
    rpg.PropertyDefinitions.Add(pd);
    rpg.Item = propertyList;
    

    propertylist是myclass的列表

    ,但是如果我有值,我想在运行时显示选择的相应项,其值是这个(一些文本),那么我认为它不会起作用。您可以使用linq查询快速找到它,我不完全清楚您想从您的问题中做什么,好吧,我将迭代LINQ查询,以选择一个特定项,该项在运行时具有值
    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();
    
    PropertyDefinition pd = new PropertyDefinition();
    pd.EditorTemplate = dt;
    //rpg =>radPropertyGrid
    rpg.PropertyDefinitions.Add(pd);
    rpg.Item = propertyList;