Resourcedictionary의 값 속성과 명시 적 DataTrigger.Value의 차이?
-
19-09-2019 - |
문제
누구든지 다음이 작동하지 않는 이유를 말해 줄 수 있지만 그 후에는 그렇지 않습니까? 값 = 구문 대 후자의 명시 적 사용량에 주목하십시오. 차이점을 이해하지 못합니다.
<Style.Triggers>
<DataTrigger Binding="{Binding ItemType}" Value="{x:Type log:FranchiseAiring}">
<Setter Property="Template" Value="{StaticResource FranchiseRowStyle}" />
</DataTrigger>
</Style.Triggers>
위는 예외를 던지고 아래는 잘 작동합니다.
<Style.Triggers>
<DataTrigger Binding="{Binding ItemType}">
<DataTrigger.Value>
<x:Type Type="{x:Type log:FranchiseAiring}" />
</DataTrigger.Value>
<Setter Property="Template" Value="{StaticResource FranchiseRowStyle}" />
</DataTrigger>
예외:DataTrigger의 바인딩과 값을 모두 지정해야합니다. 마크 업 파일의 객체 'System.Windows.Datatrigger'의 오류; 구성 요소/resourcedictionaries/logstyles.xaml '라인 14 위치 15.
스택 추적 : at System.Windows.Markup.xamlParseException.ThrowException (문자열 메시지, 예외 innerexception, int32 linenumber, int32 lineposition, uri baseuri,
해결책
아마도 그것은 아마도 링크 된 버그 anurag로 인해 발생하지만, 당신이 사용한 두 가지 예는 XAML 관점에서 정확하게 동일하지 않다는 것을 알고 있어야합니다.
이것을 요소 속성 구문으로 변환하는 경우
Value="{x:Type whatever}"
당신이 얻는 것은 :
<DataTrigger.Value>
<x:Type TypeName="whatever">
</DataTrigger.Value>
당신이 당신의 질문에 쓴 것은 실제로 일치합니다
Value="{x:Type Type={x:Type whatever}}"
typeextension의 의미론으로 인해 둘 다 내가 생각할 수있는 모든 상황에서 동일한 가치를 생산해야합니다. 그러나 다른 목적을 위해 그것들은 다를 수 있으며 WPF에서 다른 버그를 간질 질 수 있습니다.
이 때문에 가능합니다 Value="{x:Type Type={x:Type log:FranchiseAiring}}"
당신을 위해 일할 수 있습니다. 당신은 그것을 시도하고 알아 내고 싶을 수도 있습니다.
다른 팁
고정 된 버그입니다. 이것을 확인하십시오 :http://social.msdn.microsoft.com/forums/en/wpf/thread/3fd23613-6f1d-4ae6-a279-b99d6fdbc374