2015-06-14 66 views
0

我正在构建Windows Phone 8.1(非SilverLight)应用程序。我想切换时,我的ToggleButtons看起来不一样,所以我有以下代码:Windows Phone 8.1中每个人的ToggleButton的控制风格

<Page.Resources> 
    <!-- Custom style for Windows.UI.Xaml.Controls.Primitives.ToggleButton --> 
    <Style TargetType="ToggleButton"> 
     <Setter Property="Background" Value="{ThemeResource ToggleButtonBackgroundThemeBrush}" /> 
     <Setter Property="Foreground" Value="{ThemeResource ToggleButtonForegroundThemeBrush}"/> 
     <Setter Property="BorderBrush" Value="{ThemeResource ToggleButtonBorderThemeBrush}" /> 
     <Setter Property="BorderThickness" Value="{ThemeResource ToggleButtonBorderThemeThickness}" /> 
     <Setter Property="Padding" Value="12,4,12,5" /> 
     <Setter Property="HorizontalAlignment" Value="Left" /> 
     <Setter Property="VerticalAlignment" Value="Center" /> 
     <Setter Property="FontFamily" Value="{ThemeResource ContentControlThemeFontFamily}" /> 
     <Setter Property="FontWeight" Value="SemiBold" /> 
     <Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}" /> 
     <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ToggleButton"> 
      <Grid> 
       <VisualStateManager.VisualStateGroups> 
       <VisualStateGroup x:Name="CommonStates"> 
        <VisualState x:Name="Normal" /> 
        <VisualState x:Name="Checked"> 
         <Storyboard> 
          <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Border" Storyboard.TargetProperty="Background"> 
           <DiscreteObjectKeyFrame KeyTime="0" Value="Yellow" /> 
          </ObjectAnimationUsingKeyFrames> 
          <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Border" Storyboard.TargetProperty="BorderThickness"> 
           <DiscreteObjectKeyFrame KeyTime="0" Value="0" /> 
          </ObjectAnimationUsingKeyFrames> 
          <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Border" Storyboard.TargetProperty="BorderBrush"> 
           <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleButtonCheckedBorderThemeBrush}" /> 
          </ObjectAnimationUsingKeyFrames> 
          <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground"> 
           <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ToggleButtonCheckedForegroundThemeBrush}" /> 
          </ObjectAnimationUsingKeyFrames> 
         </Storyboard> 
        </VisualState> 
       </VisualStateGroup> 
       </VisualStateManager.VisualStateGroups> 
       <Border x:Name="Border" 
       Background="{TemplateBinding Background}" 
       BorderBrush="{TemplateBinding BorderBrush}" 
       BorderThickness="{TemplateBinding BorderThickness}" 
       Margin="3"> 
        <ContentPresenter x:Name="ContentPresenter" 
        Content="{TemplateBinding Content}" 
        ContentTransitions="{TemplateBinding ContentTransitions}" 
        ContentTemplate="{TemplateBinding ContentTemplate}" 
        Margin="{TemplateBinding Padding}" 
        HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
        VerticalAlignment="{TemplateBinding VerticalContentAlignment}" 
        AutomationProperties.AccessibilityView="Raw"/> 
       </Border> 
       <Rectangle x:Name="FocusVisualWhite" 
       IsHitTestVisible="False" 
       Stroke="{ThemeResource FocusVisualWhiteStrokeThemeBrush}" 
       StrokeEndLineCap="Square" 
       StrokeDashArray="1,1" 
       Opacity="0" 
       StrokeDashOffset="1.5" /> 
       <Rectangle x:Name="FocusVisualBlack" 
       IsHitTestVisible="False" 
       Stroke="{ThemeResource FocusVisualBlackStrokeThemeBrush}" 
       StrokeEndLineCap="Square" 
       StrokeDashArray="1,1" 
       Opacity="0" 
       StrokeDashOffset="0.5" /> 
      </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
    </Style> 
</Page.Resources> 

这工作,但它适用于所有ToggleButton s表示我在页面上!正如在这里看到:

multiple toggles

如何让我这个选择,使其只适用于切换按钮左侧(作为一个例子)。

回答

2

这是非常简单只需添加键值名,以你的风格e.g

<Style TargetType="ToggleButton" x:Key="MytoggleButton"> 

现在的切换按钮要实现这种风格只是参考的关键。

<ToggleButton Style="{StaticResource MytoggleButton}" ...> 
+1

我这样做,但在我的ToggleButton上,我在做'Template =“{StaticResource KeyName}”',它不工作。一旦你知道它是如何完成的,一切都很简单:)谢谢。 – Ciwan