2011-02-17 5 views
1

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에서

답변

0

를 참조하십시오 나는 MS WPF 포럼에 질문을 게시하고,이 대답에서 나는 나를 위해 최선의 경로가 지정 IValueConverter를 만드는 것입니다 생각 어디 Convert 메서드에서 사용할 대리자를 전달할 수 있으며이를 DataTemplate의 Converter로 설정할 수 있습니다.

+0

저는 이것이 농담이되기를 진심으로 바랍니다. WPF에서는 모든 것이 왜 그렇게 어렵습니까!? –

0

각 항목의 서식을 지정하려면 ListBox.ItemContainerStyle을 조사하십시오. 여기에는 각 항목에 대한 템플리트가 포함됩니다. 일부 논리를 기반으로 각 항목의 스타일을 변경하려는 경우 ListBox.ItemContainerStyleSelector와 함께 위 항목을 사용하십시오. ... 숨이 질문에 다음과 같은 을 MSDN의 문서 http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemcontainerstyle.aspxhttp://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.itemcontainerstyleselector.aspx 모두 들어

+1

감사합니다.하지만 그건 내가하고 싶은 것이 아닙니다. 스타일이 아닌 위임 논리로 서식을 지정하고 싶습니다. – user144133