Wpf 将结构添加到组合框并将结构成员显示为选定项

Wpf 将结构添加到组合框并将结构成员显示为选定项,wpf,combobox,struct,Wpf,Combobox,Struct,我有一个简单的结构 private struct _config { public string name; public int id; } 我想将其添加到组合框中,但在组合框中显示名称作为显示的名称。有人知道怎么做吗?而且,您需要的是属性而不是字段 (因为您只需要文本,所以可以放弃模板并使用它)而且,您需要的是属性而不是字段 (因为您只需要文本,所以可以放弃模板并使用它)我强烈建议您阅读HB发布的链接,但以下是您希望实现的代码: 将组合框项更改为具有get/set访问器方法

我有一个简单的结构

private struct _config
{
    public string name;
    public int id;
}
我想将其添加到组合框中,但在组合框中显示名称作为显示的名称。有人知道怎么做吗?

而且,您需要的是属性而不是字段

(因为您只需要文本,所以可以放弃模板并使用它)

而且,您需要的是属性而不是字段


(因为您只需要文本,所以可以放弃模板并使用它)

我强烈建议您阅读HB发布的链接,但以下是您希望实现的代码:

将组合框项更改为具有get/set访问器方法:

private struct Config
{
    public string Name { get; set; }
    public int Id { get; set; }
}
那么您的组合框XAML应该如下所示

<ComboBox x:Name="MyComboBox" DisplayMemberPath="Name" />

我强烈建议您阅读HB发布的链接,但以下是您希望实现的代码:

将组合框项更改为具有get/set访问器方法:

private struct Config
{
    public string Name { get; set; }
    public int Id { get; set; }
}
那么您的组合框XAML应该如下所示

<ComboBox x:Name="MyComboBox" DisplayMemberPath="Name" />

在没有任何其他内容的情况下,
组合框只使用
ToString()
方法来显示您放入其
.Items
中的任何内容。因此,一种快速而肮脏的方法就是重写结构的
ToString()
方法以返回名称,即

private struct _config
{
    public string name;
    public int id;

    public override string ToString()
    {
        return name;
    }
}

组合框
,在没有任何其他内容的情况下,只使用
ToString()
方法来显示您放入其
.Items
中的任何内容。因此,一种快速而肮脏的方法就是重写结构的
ToString()
方法以返回名称,即

private struct _config
{
    public string name;
    public int id;

    public override string ToString()
    {
        return name;
    }
}

你应该把它改成“will”而不是“may”。@mydogisbox:我确实应该,我想知道
DisplayMemberPath
是否可以处理字段。@mydogisbox:显然,因为它也使用绑定。嗯,我一直认为它可以。我想我也学到了一些东西。@mydogisbox我学到了一个艰难的方法,
DisplayMemberPath
只是一种快捷方式,它可以制作一个
ItemTemplate
,其中包含一个
TextBlock
绑定到
DisplayMemberPath
中的任何值。你应该把它改为“will”而不是“may”。@mydogisbox:我确实应该,我想知道
DisplayMemberPath
是否适用于字段。@mydogisbox:显然,由于它也使用绑定,所以它不适用。嗯,我一直认为它适用。我想我也学到了一些东西。@mydogisbox我学到了一个艰难的方法,
DisplayMemberPath
只是一种快捷方式,它可以制作一个
ItemTemplate
,其中包含一个
TextBlock
绑定到
DisplayMemberPath
中的任何值