WPF의 스타일에서 데이터 바인딩에 문제가 있습니다.WPF 데이터 바인딩 및 스타일 (MVVM 포함)
기본 설정은 다음과 같습니다
<Style x:Key="{x:Type eo:Player}" TargetType="{x:Type eo:Player}">
<Style.Triggers>
<DataTrigger Binding="{Binding Team}" Value="A">
<Setter Property="Template" Value="{StaticResource TeamATemplate}"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
스타일은 형 플레이어의 모든 객체에 적용됩니다. 이 객체는 Teams 유형의 특성을 갖습니다 (값이 A, B 및 C 인 열거 형). 플레이어 시각화에 적용된 템플릿에 플레이어가있는 팀에 따라 다릅니다.
이제는 모든 것이 MVVM 응용 프로그램에서 사용되고 Player 개체의 DataContext가 맨 위보기의 ViewModel로 설정된다는 문제가 있습니다. 나는 문제에 대해 뭔가를 찾기 위해 새로운 진단 옵션 (TRACELEVEL을) 사용이있어 :
System.Windows.Data Warning: 66 : BindingExpression (hash=30607723): Found data context element: Player (hash=35170261) (OK)
System.Windows.Data Warning: 74 : BindingExpression (hash=30607723): Activate with root item ToolboxViewModel (hash=61398511)
System.Windows.Data Warning: 104 : BindingExpression (hash=30607723): At level 0 - for ToolboxViewModel.Team found accessor <null>
플레이어 오브젝트는 데이터 컨텍스트 요소 (그것이 의미하는 것은 무엇이나) 여전히 ToolboxViewModel를 사용하면서 발견 그러니까 기본적으로 DataContext로서. 이 문제를 어떻게 해결할 수 있습니까? 바인딩 표현식에서 스타일이 지정된 객체를 어떻게 참조 할 수 있습니까?
문제가 지속 {RelativeSource 자체} 완벽하게 잘 작동
. 이 모든 원인은 DataContext가 상위 UserControl에서 상속되고 바인딩이 UserControl의 DataContext (일명 ToolboxViewModel)에서 Team 속성을 찾으려고한다는 것입니다. 문제는 바인딩에서 스타일이 지정된 객체를 어떻게 든 참조해야한다는 것입니다. – chrischu