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
中的任何值