我终于做从的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