Я наконец переключаюсь с Winforms на WPF (3.5), и я пытаюсь переместить эту функциональность через:
Распространенной практикой является управление форматированием отображения списка / поля со списком в событии Format путем передачи делегата в контейнер элемента управления. В событии «Формат» делегат форматирует отображаемый текст элемента списка так, как я хочу, чтобы он отображался (например, путем объединения свойств отображаемого элемента).
Есть ли какой-либо эквивалентный способ в поле со списком / списком WPF указать делегата для форматирования внешнего вида текста элемента списка во время выполнения?
Спасибо,
YS
К вашему сведению - вот что я пытался получить, как описано в моем ответе:
CodeBehind:
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>