未找到ListBox DisplayMemberPath属性

时间:2016-06-03 15:47:34

标签: c# wpf xaml listbox

在WPF项目中使用Microsoft Visual Studio。我有一个ListBox,其ItemsSource被设置为一个名为LuhFile的对象列表。 LuhFile包含一个公共字符串displayName。我希望列表框显示displayName,但是当我将displayname设置为ListBox的displayMemberPath时,我收到此错误:

  

System.Windows.Data错误:40:BindingExpression路径错误:'object'上找不到'displayName'属性'''LuhFile'(HashCode = 61470144)'。 BindingExpression:路径=显示名; DataItem ='LuhFile'(HashCode = 61470144); target元素是'TextBlock'(Name =''); target属性是'Text'(类型'String')

c#MainWindow

    private List<LuhFile> luhFileList;

    public MainWindow()
    {
        InitializeComponent();
        luhFileList = new List<LuhFile>();
        luhFileList.Add(new LuhFile("testPath", "testName", "testDisplay"));
        luhListBox.ItemsSource = luhFileList;
    }

c#LuhFile

class LuhFile
{
    public string path;
    public string fileName;
    public string displayName;

    public LuhFile(string givenPath, string givenFileName, string givenDisplayName)
    {
        path = givenPath;
        fileName = givenFileName;
        displayName = givenDisplayName;
    }
}

XAML

<ListBox x:Name="luhListBox" MinHeight="100" MaxHeight="130" DisplayMemberPath="displayName" />

1 个答案:

答案 0 :(得分:3)

WPF中的数据绑定适用于公共属性,而不适用于字段。

因此,请将您的项目类更改为:

public class LuhFile
{
    public string path { get; set; }
    public string fileName { get; set; }
    public string displayName { get; set; }
    ...
}