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

本文关键字:组合 WPF 设置 代码 | 更新日期: 2023-09-27 18:34:41

我正在像这样填充我的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;

如何为每个组合框项设置一些不同的值。

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

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

item.Tag = fx.FunctionValue;

两个选项

  1. 可以从 ComboBoxItem 创建派生类型,并在派生类型中定义属性。

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

绑定

组合框以显示源和绑定源

SelectedValue 和 DisplayMemberPath 如何拯救我的生命

这个小勾号可能会帮助某人

<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");
            }
        }
}
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();

将此添加到您想要添加组合框的任何编辑器模板中=> MKVC是一个用于保存我的数据的类

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

属性列表是 MyClass 的列表