당신은 설정할 수 없습니다 Content
(A)의 ContentControl
직접 이런 식으로. 그 이유는 setter 의 StackPanel
(하나만 이름 지정) Content
스타일이 적용되는 모든 버튼에 대해 동일한 인스턴스이기 때문입니다. 그러나 이것은 허용되지 않습니다 (그리고 아마도 Element가 이미 다른 요소 예외 의 자식 이라는 것을 얻게 될 것입니다 ).
대신 다음 ContentTemplate
속성을 설정해야 합니다.
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="Resources\find.bmp" Stretch="Uniform" ></Image>
<TextBlock>Find</TextBlock>
</StackPanel>
</DataTemplate>
</Setter.Value>
</Setter>
이것은 이제 템플릿의 각 인스턴스화에 대해 새로운 시각적 트리 분기가 생성되기 때문에 작동합니다 (즉, 버튼이있는만큼 StackPanel
의 등 이있을 것입니다 ).
그런 스타일 (적어도 두 번)을 통해 컨트롤의 내용을 설정할 수 없습니다.
다음과 같이 템플릿을 사용하여 콘텐츠를 전송해야합니다.
<DataTemplate x:Key="buttonTemplate">
<StackPanel Orientation="Horizontal">
<Image Source="Resources\find.bmp" Stretch="Uniform" ></Image>
<TextBlock>Find</TextBlock>
</StackPanel>
</DataTemplate>
<Style TargetType="Button" x:Key="l1" >
<Setter Property="Button.Effect" >
<Setter.Value>
<DropShadowEffect />
</Setter.Value>
</Setter>
<Setter Property="ContentTemplate" Value="{StaticResource buttonTemplate}" />
</Style>
출처
https://stackoverflow.com/questions/7414990