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

Windows 10 如何在通用Windows平台应用程序中级联样式?,windows-10,uwp,Windows 10,Uwp,我再一次与UWP斗争。似乎我无法在样式中级联样式。这是UWP中不允许的其他内容吗 这就是我想做的 <Style x:Key="MainMenuRadioButtonStyle" TargetType="RadioButton"> <Setter Property="Backgroud" Value="Grey"/> <Style.Resources TargetType="TextBlock">

我再一次与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>
这是显示您的
单选按钮的实际内容的部分,正如您所看到的,它不是
文本块
,而是
内容呈现器
(它将显示文本,就像它是
文本块
)。好消息是这个控件有一个
Margin
属性,它从模板中获取
Padding
属性的值。因此,为了实现您的目标,您可以简单地填写以下属性:

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


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

Bart,谢谢。你的开场白证实这是不可能的,这是我所期待的,真是太遗憾了。WPF中的XAML样式确实具有与CSS非常相似的功能。我越是试图在UWP内部发展,我就越是感到沮丧。微软的“开发者最佳体验”口号是一个笑话。没有实体框架支持,没有SQL Express,没有使用SQL Express的合并复制支持。工具箱中没有了一些控件,如StatusBar、DataGrid、DockPanel。到目前为止,我的发展经历缓慢且令人沮丧。不管怎么说,再次感谢你。这仍然是一个沙盒环境(从头重写),所以你确实受到了限制。希望您能在某个时候学会接受它(3年以上我就习惯了沙箱),并开始享受它:)尽管令人沮丧,但当我找到或开发替代解决方案(如编写自己的数据复制)时,它确实令人满意。干杯(巴特)
<Style x:Key="MainMenuRadioButtonStyle" TargetType="RadioButton">
    <Setter Property="Background" Value="Grey"/>
    <Setter Property="Padding" Value="{StaticResource MyMargin}" />
</Style>