WPF重写setter属性
我正在使用XAML中的样式作为标签: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" />
<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解释器。它无法正确解释新字体大小。