2015-11-04 36 views
3

我还在与UWP争斗。似乎我无法在样式中级联样式。这是UWP不允许的其他内容吗?如何在通用Windows平台应用程序中级联样式?

这就是我试图做...

 <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抱怨说,<Style.Resources>是无效的。我不希望在我的RadioButton内容中单独设置TextBlock的样式。

回答

2

在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> 

如果你想改变所不具备的默认模板的属性,那么你就必须创建自己的模板。

+0

Bart,谢谢。你开放线确认这是不可能的是我期待的,这是一个真正的耻辱。 WPF中的XAML样式确实具有与CSS非常相似的功能。我越努力在UWP中发展,我越是感到沮丧。微软的“A开发者最佳体验”标签是一个笑话。没有实体框架支持,没有SQL Express,没有使用SQL Express的合并复制支持。从工具箱中删除了一些控件,例如StatusBar,DataGrid,DockPanel。我迄今的发展经历是缓慢而令人沮丧的。无论如何,咆哮结束,再次感谢。 –

+0

它仍然是一个沙箱环​​境(从头开始重写),所以你确实有限。希望你能学会在某些时候(在3 + y我已经习惯了沙盒之后)和它一起生活,并开始享受它:) – Bart

+0

尽管令人沮丧,但当我找到或开发替代解决方案时(像写作我自己的数据复制)它确实令人满意。干杯巴特。 :) –

相关问题