Window.Resources
내에 로컬로 정의 된 스타일이 있습니다. TextBlock
, TextBox
, CheckBox
및 RadioButton
에 대한 스타일이 있습니다. 이것들은 윈도우의 모든 컨트롤에 적용될 예정이므로 x:Key
에 대한 값을 제공하지 않았습니다. FrameworkElement
을 타겟팅하는 스타일을 상속 받고 싶습니다.다른 스타일에서 기본 스타일을 사용할 수 없음
<Style TargetType="{x:Type RadioButton}">
...
</Style>
<Style TargetType="{x:Type TextBlock}">
...
</Style>
<Style TargetType="{x:Type TextBox}">
...
</Style>
<Style TargetType="{x:Type CheckBox}">
...
</Style>
<Style x:Key="TriggerBase" TargetType="{x:Type FrameworkElement}">
<Style.Triggers>
<Trigger Property="UIElement.IsMouseOver" Value="True">
...
</Trigger>
</Style.Triggers>
</Style>
내 문제는 내가 내 TriggerBase
스타일에서 상속하는 BasedOn
속성을 설정할 수 없습니다 오전입니다 : 그래서 내가 좋아하는 뭔가가있다. this 및 this과 같은 유사한 질문을 본 후에도 여전히 작동하지 않습니다. 이 답변은 기본 스타일에 TargetType
을 지정해야한다고 제안합니다.
어쩌면 스타일은 동일한 유형을 대상으로해야하지만, MSDN에 주위 파고 후 나는 그 문제가 아니었다 찾을 생각 :
당신이은 TargetType 속성과 스타일을 만들고 그것을 기반으로하는 경우 TargetType 속성도 정의하는 다른 스타일에서 파생 스타일의 대상 유형은 기본 스타일 유형과 동일하거나 파생되어야합니다.
내가BasedOn="{DynamicResource TriggerBase}"
같은BasedOn
을 설정하면
, 내 TriggerBase
을 찾을 수 있습니다,하지만 난라는 오류 얻을 :
유형의 '스타일 '. 'DynamicResourceExtension'은 DependencyObject의 DependencyProperty에서만 설정할 수 있습니다. 내가
BasedOn="{StaticResource TriggerBase}"
을 시도하는 경우가TriggerBase
를 찾을 수 없습니다
, 나는 오류가 발생합니다. 위의 링크 된 답변 중 하나는 StaticResource
을 BasedOn="{StaticResource {x:Type FrameworkElement}
과 같이 사용했으나 여전히 스타일을 해결할 수 없습니다.
TriggerBase
스타일을 어떻게 상속받을 수 있습니까? 나는 .NET 4.5를 목표로하고있다.
는 그냥 코드와 시도 작동합니다 내가해야만 한 일은'TriggerBase' 스타일을 맨 위로 옮기고'BasedOn = "{StaticResource TriggerBase}"'가 작동했습니다 – dkozl
덕분에, 고마워요. 주문이 중요하다는 것을 알지 못했습니다. 수업은 배웠다. 당신이 그것을 하나로 추가하고 싶다면 당신의 대답을 받아 들일 것입니다. –