카테고리 없음

[wpf] 스타일의 Stackpanel

행복을전해요 2020. 12. 10. 10:04

당신은 설정할 수 없습니다 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