首页 新闻 搜索 专区 学院

WPF/XAML中Lable的Content进行绑定之后无法设置样式的问题

0
[已解决问题] 解决于 2020-07-13 13:05

Button的Template如下:

<ControlTemplate x:Key="DeviceButtonV2" TargetType="Button">
            <DockPanel x:Name="DP">
                <Image x:Name="DeviceIcon" Source="/icons/设备.png" Stretch="None"/>
                <StackPanel>
                    <Label Height="6"/>
                    <Label x:Name="DeviceInfo" Content="{Binding Path=Content, RelativeSource={RelativeSource AncestorType=Button}}"/>
                </StackPanel>
            </DockPanel>
            <ControlTemplate.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter TargetName="DP" Property="Background" Value="AliceBlue"/>
                </Trigger>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter TargetName="DeviceIcon" Property="Source" Value="/icons/设备不可用.png"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>

具体的使用如下:

<Button Template="{StaticResource DeviceButtonV2}">
                                <StackPanel>
                                    <TextBlock Text="[ TC-0342-32A ]"/>
                                    <TextBlock Text="SMT贴片机"/>
                                </StackPanel>
                            </Button>

现在的问题是,我无法通过设置DeviceInfo这个Label的样式来达到修改实际Button中的两个TextBlock的样式。也就是说,无论在

<Label x:Name="DeviceInfo" Content="{Binding Path=Content, RelativeSource={RelativeSource AncestorType=Button}}"/>

中如何设置样式(比如字体大小等),实际按钮中文字的样式不会有任何变化。
如何解决这个问题?
我知道这应该是由于设置的元素不匹配的问题,也就是说我在Template中只能设置到Lable这一层,而实际Button中的TextBlock是Lable的子元素。是不是可以这样说,我无法在Template中直接对这个TextBlock的样式进行修改?

asgore的主页 asgore | 菜鸟二级 | 园豆:202
提问于:2020-07-13 12:10
< >
分享
最佳答案
0

是的 content是外部元素

奖励园豆:5
日暮青色 | 菜鸟二级 |园豆:455 | 2020-07-13 12:21
其他回答(1)
0

label里设置Textblock.Fontsize,但这种属性有限,没搞懂你为什么放label却设置textblock的样式,那还不如干脆用textblock

debugMan_hl | 园豆:204 (菜鸟二级) | 2020-07-13 16:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册