Winforms에서 WPF (3.5) 로의 전환을 마쳤습니다.이 기능을 이전하려고합니다.WPF는 Winforms ListControl.Format 이벤트와 동일합니까?
광산의 일반적인 관행은 컨트롤 컨테이너에 대리자를 전달하여 Format 이벤트에 목록/콤보 상자를 표시합니다. 형식 이벤트에서 대리자는 목록 항목의 표시 텍스트를 표시 할 때 서식을 지정합니다 (예 : 표시 항목의 속성을 결합하여). WPF 콤보/목록 상자에서 런타임시 목록 항목 텍스트의 서식을 지정하는 대리자를 지정하는 것과 동일한 방법이 있습니까? 감사합니다, YS
참고- 여기 내 대답에 설명 된대로 내가 얻을 위해 노력했다 :
코드 숨김 :
<ComboBox.ItemTemplate> <DataTemplate> <TextBlock Text="{Binding Converter={StaticResource ResourceKey=myConverter}}"> </TextBlock> </DataTemplate> </ComboBox.ItemTemplate>
:
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에서
저는 이것이 농담이되기를 진심으로 바랍니다. WPF에서는 모든 것이 왜 그렇게 어렵습니까!? –