本文介绍了按钮样式的内容仅出现在一个Button实例中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个Viewbox:

I have a Viewbox:

<Viewbox x:Key="SampleViewbox" >
  <Grid>
    <Ellipse Stroke="#e2e2e0" StrokeThickness="6" Fill="#d5273e" Width="128" Height="128"/>
  </Grid>
</Viewbox>

然后我将其包括在样式中:

I then include this in a Style like:

<Style x:Key="SampleStyle" TargetType="{x:Type Button}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Border Background="Transparent" >
                    <ContentPresenter Content="{StaticResource SampleViewbox}"/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

现在我用 SampleStyle

<Grid>
    <StackPanel>
       <Button Style="{StaticResource SampleStyle}" Height="50" Width="50"></Button>
       <Button Style="{StaticResource SampleStyle}" Height="80" Width="80"></Button>
       <Button Style="{StaticResource SampleStyle}" Height="20" Width="20"></Button>
    </StackPanel>
</Grid>

但是,只有一个按钮具有椭圆(视图框)

However, Only one button has the Ellipse (viewbox)

如何使所有按钮具有/显示椭圆形?

How can I make all the buttons have/show the ellipse??

推荐答案

Viewbox是FrameworkElement,不能属于多个父级。每次按钮请求资源 {StaticResource SampleViewbox} 时,它们都会获得相同的实例。

Viewbox is FrameworkElement which cannot belong to multiple parents. Every time buttons request a resource {StaticResource SampleViewbox} they get the same instance.

要更改该行为,请添加 x:Shared = False 属性

to change that behavior add x:Shared="False" attribute

<Viewbox x:Key="SampleViewbox" x:Shared="False">

这篇关于按钮样式的内容仅出现在一个Button实例中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-01 15:12