gpt4 book ai didi

windows-10 - 如何在通用 Windows 平台应用程序中级联样式?

转载 作者:行者123 更新时间:2023-12-02 01:32:07 25 4
gpt4 key购买 nike

我又一次与 UWP 作斗争。看来我无法在样式中级联样式。这是 UWP 中不允许的其他内容吗?

这就是我想要做的...

        <Style x:Key="MainMenuRadioButtonStyle" TargetType="RadioButton">
<Setter Property="Backgroud" Value="Grey"/>
<Style.Resources TargetType="TextBlock">
<Setter Property="Margin" Value="12,0,0,0"/>
</Style.Resources>
</Style>

但是,VS2015 提示 无效。我不想在我的 RadioButton 内容中单独设置 TextBlock 的样式。

最佳答案

UWP(或一般的 XAML)不支持样式内的级联。您通常做的是拆分可重复使用的样式/属性并引用它们。

<Thickness x:Key="MyMargin">"12,0,0,0"</Thickness>

<Style x:Key="MainMenuRadioButtonStyle" TargetType="RadioButton">
<Setter Property="Background" Value="Grey"/>
<Setter Property="Margin" Value="{StaticResource MyMargin}" />
</Style>

您尝试实现的是“改变”RadioButton 的模板。您可以在此处找到完整模板:https://msdn.microsoft.com/en-us/library/windows/apps/mt299147.aspx .如果深入研究模板,您会看到这段代码:

<ContentPresenter x:Name="ContentPresenter"
Content="{TemplateBinding Content}"
ContentTransitions="{TemplateBinding ContentTransitions}"
ContentTemplate="{TemplateBinding ContentTemplate}"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
Grid.Column="1"
AutomationProperties.AccessibilityView="Raw"
TextWrapping="Wrap" />

这是显示 RadioButton 实际内容的部分,如您所见,它不是 TextBlock,而是 ContentPresenter(它将显示文本,就好像它是一个 TextBlock)。好消息是这个控件有一个 Margin 属性,它从模板中获取 Padding 属性的值。所以要实现你想要的,你可以简单地填写这个属性:

<Style x:Key="MainMenuRadioButtonStyle" TargetType="RadioButton">
<Setter Property="Background" Value="Grey"/>
<Setter Property="Padding" Value="{StaticResource MyMargin}" />
</Style>

如果您想更改默认模板中不可用的属性,则必须创建自己的模板。

关于windows-10 - 如何在通用 Windows 平台应用程序中级联样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33520226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com