有没有办法为放置在组合框中的项目使用标签功能?
目前它使用ToString()
来获取标签。例如,假设您有一个ComboBox
由类型列表对象支持的Person
:
namespace WpfApplication1 {
public class Person {
public string fname { get; set; }
public string mname { get; set; }
public string lname { get; set; }
public Person(string fname, string mname, string lname) {
this.fname = fname;
this.mname = mname;
this.lname = lname;
}
public override string ToString() {
return this.lname +", " + this.fname + " "+ this.mname;
}
}
}
但是现在你希望每个人的文本都this fname + " "+ this.mname[0]+" "+this.lname
在某些地方。理想情况下,我希望能够向支持 XAML cs 文件添加一个方法,例如:
public string GetLabel(Person item) {
return item.fname + " " + item.mname[0] + " " + item.lname;
}
然后以某种方式将 ComboBox 指向 cs 文件中的方法。
这是一个示例 XAML 文件和 XAML.cs(如果有帮助):
MainWindow.xaml
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="100" Width="250">
<Grid>
<ComboBox x:Name="items" Height="22" Width="200" ItemsSource="{Binding}"/>
</Grid>
</Window>
主窗口.xaml.cs
using System.Collections.Generic;
using System.Windows;
namespace WpfApplication1 {
public partial class MainWindow : Window {
public List<Person> persons { get; set; }
public MainWindow() {
InitializeComponent();
this.persons = new List<Person>();
persons.Add(new Person("First", "Middle", "Last"));
persons.Add(new Person("John", "Jacob", "Jingleheimer"));
persons.Add(new Person("First", "Middle", "Last"));
this.items.DataContext = this.persons;
}
public string GetLabel(Person item) {
return item.fname + " " + item.mname[0] + " " + item.lname;
}
}
}