0
ToggleButton을 상속 한 사용자 지정 컨트롤 인 ColorToggleButton을 만들었습니다. 해당 .xaml 파일에서 ColorToggleButton은 TargetType 및 BasedOn ToggleButton을 통해 고유합니다.WPF 스타일 계층 구조
<Style TargetType="ctl:ColorToggleButton" BasedOn="{StaticResource {x:Type ToggleButton}}">
이 잘 작동하지만 내가 X를 사용하여 창에 다른 스타일을 적용하는 경우 :
<Style x:Key="SameContent"><Setter Property="Content" Value="Same Content" /></Style>
<ctl:ColorToggleButton Style={StaticResource SameContent} />
같이 키를 기존의 스타일은 완전히 전멸하고 새 것으로 교체받을 것으로 보인다. 나는
<Style x:Key="SameContent" BasedOn="{StaticResource {x:Type ctl:ColorToggleButton}}"><Setter Property="Content" Value="Same Content" /></Style>
<ctl:ColorToggleButton Style={StaticResource MyKey} />
BasedOn
를 사용하여 문제를 회피 할 수 있지만 이것은 내가 정상 ToggleButton을 또는 다른 기본 컨트롤에 스타일을 적용하는 경우 나는 BasedOn 속성을 사용하지 것처럼보고, 나에게 반 직관적 보인다. 이것은 자신의 컨트롤을 구현하는 표준 방법입니까? 나는 끔찍한 일을 잘못하고 있니?편집 : 당신의 통제에서
static ColorToggleButton()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(ColorToggleButton), new FrameworkPropertyMetadata(typeof(ColorToggleButton)));
}
예, 질문도 업데이트했습니다. – user1787270