2009-11-09 2 views
0

내 GridView에서 내 컬렉션에있는 각 개체의 Type 이름을 포함하고 싶습니다. 나는 기본 클래스에서 파생되는 네 가지 유형이있는 컬렉션을 가지고 있습니다. 그들을 Foo, Bar, Fizz 및 Buzz라고 부릅니다.WPF GridView, Display GetType(). DisplayMemberBinding의 이름

해당 열을 Foo, Bar, Fizz 또는 Buzz로 각각 읽으려고합니다. 아래는 바인딩을 사용하고 있지만 작동하지 않습니다.

지금까지 이걸 가지고 있습니다. 내가 나를 위해 GetType().Name라고 TYPENAME라는 문자열 속성을 사용하는 경우

GridViewColumn colC = new GridViewColumn() 
{ 
Header = "Type", 
Width = 100, 
DisplayMemberBinding = New Binding("listName.GetType().Name") 
} 

이 작업을 수행합니다.

아이디어가 있으십니까? 나는 그것을 정확하게 설명하고 있는가?

답변

2

바인딩을 사용하여 메소드를 호출 할 수 없습니다. 래퍼 속성 (TypeName 솔루션에 따라) 또는 변환기 (예 :

public class TypeNameConverter : IValueConverter 
{ 
    public object Convert(object value, ...) 
    { 
    return value.GetType().Name; // omitting error handling 
    } 
} 

DisplayMemberBinding = new Binding("listName") { Converter = new TypeNameConverter() }; 

변환기 방식은 분명히 모델을 수정할 필요가 없다는 이점이 있습니다.

+0

@itowlson 예, 맞습니다. MVVM을 구현하는 과정에 있습니다. – Chris