2010-01-27 4 views
1

현재 작업하고있는 시스템은 내부적으로 많은 수의 사용자 지정 값 형식을 사용합니다. WPF를 사용하는 프로토 타입 UI에서 작업하고 있습니다. WPF는 사용자 지정 형식을 표시하는 방법을 알지 못합니다. 이 작업을 수행 할 사용자 지정 ValueConverter를 작성할 수는 있지만 실제로 XAML의 클래스에 바인딩 할 때마다 변환기 사용을 지정하고 싶지는 않습니다.값 변환기를 사용하지 않고 WPF에서 사용자 지정 값 형식 표시

WPF에서 기본적으로 표시하는 방법을 알 수있는 사용자 지정 값 형식으로 구현할 수있는 인터페이스가 있습니까?

또는 모든 바인딩 식에 ValueConveter를 지정하지 않고도 사용자 지정 형식의 인스턴스에 적용 할 응용 프로그램 차원의 값 변환기를 지정할 수있는 방법이 있습니까?

답변

1

아하! 그것을 알아 냈다. TypeConverter를 작성하여 내 사용자 정의 유형에 적용해야했습니다. 이를 통해 WPF는 XAML에서 템플릿이나 변환기를 지정하지 않고도이를 처리하는 방법을 자동으로 파악할 수 있습니다.

http://msdn.microsoft.com/en-us/library/ayybcxe5.aspx

+0

** 이것은 나쁜 생각이며 문제에 대한 해결책이 아닙니다. ** 대신'App.xaml' 또는'Themes/Generic.xaml'에 디폴트'DataTemplate'을 사용해야합니다. 템플릿을 사용하면 WPF를 강력하게 만들 수 있습니다. 동일한 객체가 응용 프로그램의 다른 부분이나 다른 응용 프로그램에서 다르게 보이고 데이터 영역과 UI 사이에 명확한 구분이 생깁니다. 좋은 WPF 디자인의 기본 원칙은 데이터 계층이 UI에 대해 아무 것도 알지 못한다는 것입니다. 이것에 대한 많은 좋은 이유가 있습니다. UI를 알고있는 TypeConverter를 사용하면이 원칙을 심각하게 위반하게됩니다. –

+0

@ 레이 번즈 : 솔루션은 사용자 정의 값 유형에 대해 완벽하게 괜찮습니다. 예를 들어 변환 및 데이터베이스 액세스를 쉽게하기 위해 사용자 정의 문자열, 소수 및 부울 유형이 있습니다. –

1

값 유형으로 DataTemplate을 지정하고 응용 프로그램 자원에 넣을 수 있어야합니다. 그러면 값 유형이 전역으로 표시되는 방식이 결정됩니다.

0

매우 분명하다면 바보 같지만 가치 유형을 ToString()으로 바꾸지 않으시겠습니까?

+0

내가 했어. 적어도 DataGrid에 바인딩되어있는 경우에는 작동하지 않습니다. – Jason

관련 문제