我有一个包含TextBlock控件的Windows Phone 8.1项目的UserControl。我想使用UserControl从Control类继承的FontSize属性。但我无法覆盖FontSize属性,似乎没有我可以订阅的FontChanged事件。
最终,我希望能够在包含我的用户控件的页面的XAML中设置FontSize属性,并将其迁移到包含的TextBlock的FontSize属性/属性。
只是没有看到如何做到这一点。
First UserControl:
<UserControl x:Class="KeyPadButton">
<Grid x:Name="MainGrid" Background="Gray" >
<Border BorderBrush="Black" BorderThickness="5" Padding="3" >
<TextBlock x:Name="Button" Text="9" FontSize="2"/>
</Border>
</Grid>
</UserControl>
第二个UserControl:
<UserControl x:Class="KeyPad">
<Grid>
<local:KeyPadButton Text="0" FontSize="22"/>
</Grid>
</UserControl>
包含页面:
<Page>
<StackPanel>
<local:KeyPad x:Name="KeyPad" FontSize="55"/>
</StackPanel>
</Page>
如何在页面中设置KeyPad控件的FontSize并将其向下迁移到KeyPad中的KeyPadButton控件?
答案 0 :(得分:0)
<Style TargetType="{x:Type local:TextBlock2}" BasedOn="{StaticResource styleMyTextBlock}" >
<Setter Property="FontSize" Value="22" />
</Style>
XAML WITHOUT 必须明确关联要使用的“Style”。它直接根据类关联找到它。
<src:TextBlock2 Content="Now Works as expected"/>
不要使用x:key
,因为如果你有x:key
,它没有被类实例暗示,但没有它,直接类会自动找到它。
一个样式可以多次定义到同一个TARGET TYPE ......但是,一个可以有一个x:key
引用,另一个可以有一个BasedOn
引用。此外观与重载功能具有相同的编号,但数据类型参数不同。
“TargetType”的任何直接类实例都不会自动链接到正确的样式,几乎就像带有“x:key”的样式声明一样,需要类的任何实例在xaml中明确添加样式上下文控制。那么现在,如何实现这两种方式。我创建了一个以TargetType作为基类的SECOND样式,但是BasedOn指向了x:key引用的样式。这样,我得到了样式的默认自定义,但是仍然可以将它分配给基类和派生类,因此控件的所有3个版本都可以自动与相应的样式同步而不需要EXPLICIT引用。
<Style TargetType="TextBlock" x:Key="wpfBaseTextBlock">
<Setter Property="FontSize" Value="11" />
</Style>
<Style TargetType="TextBlock" BasedOn="{StaticResource wpfBaseTextBlock}" />
<Style TargetType="{x:Type local:TextBlock2}" BasedOn="{StaticResource wpfBaseTextBlock}">
<Setter Property="Foreground" Value="Blue" />
</Style>
我们可以使用或不使用显式样式关联的所有3个“类”。
答案 1 :(得分:0)
(没关系。)