WPF重写setter属性

WPF重写setter属性,wpf,styles,controltemplate,setter,Wpf,Styles,Controltemplate,Setter,我正在使用XAML中的样式作为标签: <Style x:Key="TreatEye" TargetType="Label"> <Setter Property="Foreground" Value="#d1d1d1" /> <Setter Property="FontWeight" Value="Bold" /> <Setter Property="FontSize" Value="30" />

我正在使用XAML中的样式作为标签:

<Style x:Key="TreatEye" TargetType="Label">
        <Setter Property="Foreground" Value="#d1d1d1" />
        <Setter Property="FontWeight" Value="Bold" />
        <Setter Property="FontSize" Value="30" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Label">
                    <Canvas>                            
                        <TextBlock x:Name="retreatText" Canvas.Left="80" Canvas.Top="5" FontSize="16"  Text="Retreatment"/>                                                        
                        <TextBlock x:Name="bioinsulatorText" Canvas.Left="21" Canvas.Top="33" Text="Bioinsulator" />
                        <TextBlock x:Name="kxlText" Canvas.Left="21" Canvas.Top="70" Text="KXL Kit" />
                    </Canvas>
...

...
我看到的问题是“reatreatext”的FontSize属性没有被setter值30覆盖。这可以很好地构建,但最终显示的“RestareText”大小为30。为什么不覆盖此值


提前感谢。

很抱歉,我在Kaxaml中尝试了您的代码,并按预期工作:

<Page
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Page.Resources>
  <Style x:Key="TreatEye" TargetType="Label">
        <Setter Property="Foreground" Value="#d1d1d1" />
        <Setter Property="FontWeight" Value="Bold" />
        <Setter Property="FontSize" Value="30" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Label">
                    <Canvas>                            
                        <TextBlock x:Name="retreatText" Canvas.Left="80" Canvas.Top="5" FontSize="16" Text="Retreatment"/>                                                        
                        <TextBlock x:Name="bioinsulatorText" Canvas.Left="21" Canvas.Top="33" Text="Bioinsulator" />
                        <TextBlock x:Name="kxlText" Canvas.Left="21" Canvas.Top="70" Text="KXL Kit" />
                    </Canvas>
                </ControlTemplate>
        </Setter.Value>                
      </Setter>
     </Style>
    </Page.Resources>

  <Grid>  
    <Label Style="{StaticResource TreatEye}">Ejemplo</Label>
  </Grid>
</Page>

埃杰姆波
结果:


您需要在文本块上设置TemplateBinding

<TextBlock x:Name="retreatText"
           Canvas.Left="80" 
           Canvas.Top="5" 
           FontSize="{TemplateBinding FontSize}" 
           Text="Retreatment"/> 


这就是setter属性被分配到内部结构的方式。

您希望
returntext
的字体大小是多少?如果我读对了,它的字体大小应该是16.Oops。误读了这个问题。在TextBlock上显式设置大小应该将大小固定为16。你是对的!运行应用程序后,它会正确显示。问题在于我用于开发的VisualStudioXAML解释器。它无法正确解释新字体大小。