0
내 사용자 정의 컨트롤에 대한 FocusVisualStyle을 만들고 오버라이드를 성공적으로 구현했습니다. 내 문제는 부모로부터 일부 속성을 사용하고 싶습니다,하지만 TemplateBinding 작동하지 않는 것 같습니다.FocusVisualStyle 부모에게 속성을 바인딩하는 템플릿
하여 제어의 단순화 된 버전은 다음과 같이 정의된다
<Style TargetType="{x:Type local:Thought}">
<Setter Property="FocusVisualStyle" Value="{StaticResource ThoughtFocusStyle}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:Thought}" >
<Border BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{StaticResource ThoughtBorderNormalBrush}">
<!-- other controls -->
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
내 사용자 정의 FocusVisualStyle이 정의를 다음과 같이
<Style x:Key="ThoughtFocusStyle" TargetType="{x:Type Control}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Control}">
<Border BorderThickness="{TemplateBinding BorderThickness}"
BorderBrush="{StaticResource ThoughtBorderFocusBrush}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
예상대로 ThoughtFocusStyle에서 나는 하드 코드의 경계선이 작동하는 경우 (컨트롤에 Tab)하지만 TemplateBinding을 사용하면 않습니다. 나는 RelativeSource를 가지고 놀았지만 구문을 올바로 보일 수는 없다. (여전히 WPF에서는 매우 새로운 것이다.)
근무, 올바른 구문 주셔서 감사합니다. – Spevy
TemplateBinding을 사용하면 TemplateBinding을 사용하여 템플릿 바인딩과 정확히 일치하는 템플릿을 만들 수 있습니다 ... 어떤 상황에서 작동하지 않는지 기억하지 못합니다. –
시도해보십시오. "{Binding RelativeSource = {{ RelativeSource 모드 = TemplatedParent}, 경로 = BorderThickness} " –