我終於做從的WinForms切換到WPF(3.5),和我想搬過來這個功能:WPF等效的Winforms ListControl.Format事件? (格式化列表項與代表)
我的一個常見的做法是控制的格式通過將委託傳遞給控件的容器,在Format事件中顯示列表/組合框。在「格式事件」中,委託按照我希望的方式顯示列表項目的顯示文本的格式(例如,通過組合顯示項目的屬性)。 是否有任何與WPF組合/列表框等效的方式來指定一個委託在運行時格式化List Item文本的外觀? 謝謝, YS
僅供參考 - 在這裏,我試圖讓在,在我的答案描述:
代碼隱藏:
public partial class MainWindow : Window
{
private List<Foo> l = new List<Foo>();
//Formatting done by delegate, passed to converter.
MyConverter<Foo> cv = new MyConverter<Foo>(f=> "#" + f.ID + " = " + f.Name);
public MainWindow()
{
Resources.Add("myConverter", cv);
l.Add(new Foo(){ID=1, Name = "aaaa aaaa"});
l.Add(new Foo(){ID=2, Name = "bbbb bbbb "});
DataContext = l;
InitializeComponent();
}
}
public class Foo
{
public int ID { get; set; }
public string Name { get; set; }
}
public class MyConverter<T> : IValueConverter
{
private Func< T, string> _formatter { get; set; }
public MyConverter(Func<T, string> Formatter)
{
_formatter = Formatter;
}
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return _formatter((T)value);
}
}
然後在XAML:
<ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Converter={StaticResource ResourceKey=myConverter}}"> </TextBlock> </DataTemplate> </ComboBox.ItemTemplate>
我真的很希望這是個玩笑 - 爲什麼WPF中的一切都變得更加困難!? – 2013-10-09 13:06:03