是否有要用於放置在組合框中的項目標籤功能的方法嗎?的標籤設置功能的組合框
目前它使用ToString()
,以獲取標籤。舉個例子說,你有一個由Person
類型的列表對象支持的ComboBox
:
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;
}
然後以某種方式指向它在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>
MainWindow.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;
}
}
}
考慮將函數名稱ItemLabel更改爲GetLabel()。這會更有意義嗎? – David 2013-03-21 16:31:17
@David GetLabel()是一個更好的名字 – 2013-03-21 16:35:42
你有沒有考慮過使用mvvm? – 2013-03-21 16:38:00