DisplayMemberPath 空白 WPF

问题描述

我正在尝试将 WPF 中的 ComboBox 绑定到 LogLevels 列表。下面类

public class LogLevel
{
    public string Label;
    public byte Val;

    public static List<LogLevel> GetAll()
    {
        return new List<LogLevel> {
            new LogLevel{
                 Label = "None",Val = 0
            },new LogLevel{
                 Label = "Info",Val = 3
            },new LogLevel{
                 Label = "Error",Val = 2
            }
        };
    }
}

我希望能够使用 GetAll 的结果填充 ComboBox 并将 displayMemberPath 设置为“标签

ddlLogLevel.ItemsSource = LogLevel.GetAll();

<ComboBox displayMemberPath="Label" x:Name="ddlLogLevel"  />

我也尝试在控件的代码隐藏中静态设置值,但组合框有空白标签。 selecteditem 和 index 正在按预期填充,只是不确定如何使 display 值起作用

解决方法

DisplayMemberPath 类型是属性,而不是字段。

如果您更改此设置,您可以看到组合框项目。

public class LogLevel
{
    public string Label { get; private set; }
    public byte Val { get; private set; }

    public static List<LogLevel> GetAll()
    {
        return new List<LogLevel> {
            new LogLevel{
                 Label = "None",Val = 0
            },new LogLevel{
                 Label = "Info",Val = 3
            },new LogLevel{
                 Label = "Error",Val = 2
            }
        };
    }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...