아니요, Binding
클래스는 이러한 기능을 제공하지 않습니다. 실제로 그것은 필요하지 않습니다. 바인딩 프레임 워크는 소스 객체를 관련 유형으로 자동 변환하고 바운드 속성 값을 사용합니다. 그렇지 않으면 해당 속성을 찾을 수없는 경우 바인딩 오류가 발생합니다. 내 ViewModel
public object Dummy
{
get
{
return dummy;
}
set
{
dummy = value;
NotifyPropertyChanged("Dummy");
}
}
에 Object
유형의 속성을 가지고있는 경우
그래서 나는이 같은 TextBox
에 바인딩 -
<TextBox Text="{Binding Dummy.Name}" HorizontalAlignment="Stretch"/>
을 나중에이 같은 객체에 더미를 설정 -
Dummy = new MyCustomType();
이 시점에서의 평가는 te이고 소스 객체 (Dummy
)에 Name
속성을 찾고 이 Name
이라는 공용 속성을 정의하면 바인딩이 실행됩니다. 그렇지 않으면 바인딩 오류가 발생합니다 (오류 메시지 만 예외는 아닙니다). 출력 창에서). Botz300는
을 제안
DataTemplates
정의 - 자, 경우에 나는 두 가지 유형의 오브젝트 (하나 Name
을 가진 다른 FirstName
을 가진) 나는이 두 가지 옵션이 있습니다 내 Dummy
속성을 설정하려면 ValueConverter
(오브젝트 유형을 확인하고 관련 특성 값을 리턴)을 사용하십시오.
는 ValueConverter
를 사용하는 또 다른 변형 자동 변환이 수행됩니다 바인딩에 다음, 변환을 수행하고 TypeConverterAttribute
로 선언하는 TypeConverter
을 정의한다.
동일하게 개체를 수집합니다.
업데이트 :
예, WPF는 암시 적으로 관련 표시 값에 형식을 변환 할 DefaultType
컨버터를 사용합니다.Object
을 속성 (위의 예에서 Text
)에 직접 바인딩하는 경우 WPF는 해당 유형 (사용 가능한 경우)에 TypeConverter
을 사용하거나 ToString()
메서드를 사용하여 표시 값을 가져옵니다.
그러나이 모든 것은 데이터를 표시하는 데 사용하는 컨트롤과 바인딩 방법/방법에 따라 다릅니다.
참고 :이 속임수는 간단한 텍스트 표현을 가질 수있는 개체 만 있으면 충분합니다. 복잡한 데이터 객체를 다룰 때이 편리한 기술을 사용하는 것이 이치에 맞지 않을 수도 있습니다.
당신은이에 대해 이야기 MSDN에이 문서를 통해 갈 수 있습니다 - Customize Data Display with Data Binding and WPF
전달 된 값의 유형에 따라 값을 반환하는 변환기를 만들 수 있습니다. – benjer3