Xaml 是否有任何方法可以访问VisualStateManager中ContentPresenter的子级并更改其属性?

Xaml 是否有任何方法可以访问VisualStateManager中ContentPresenter的子级并更改其属性?,xaml,windows-store-apps,visualstatemanager,Xaml,Windows Store Apps,Visualstatemanager,在我的windows应用商店应用程序中,我尝试创建一个按钮样式,如导航后退按钮。所以我创建了一个ButtonStyle,它包含一个路径(一个圆)和一个ContentPresenter App.xaml的内部资源字典: <Style x:Key="CnSCircleButtonStyle" TargetType="Button"> <Setter Property="Template"> <

在我的windows应用商店应用程序中,我尝试创建一个按钮样式,如导航后退按钮。所以我创建了一个ButtonStyle,它包含一个路径(一个圆)和一个ContentPresenter

App.xaml的内部资源字典:

   <Style x:Key="CnSCircleButtonStyle" TargetType="Button">
            <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="Button">
                                <Grid>
                                    <VisualStateManager.VisualStateGroups>
                                        <VisualStateGroup x:Name="CommonStates">
                                            <VisualState x:Name="Normal" />
                                            <VisualState x:Name="PointerOver">
                                                <Storyboard>
                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Circle" Storyboard.TargetProperty="Fill">
                                                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonPointerOverBackgroundThemeBrush}" />
                                                </ObjectAnimationUsingKeyFrames>

                                            </Storyboard>
                                        </VisualState>
                                        <VisualState x:Name="Pressed">
                                            <Storyboard>
                          <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Circle" Storyboard.TargetProperty="Fill">
                                                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource AppBarItemForegroundThemeBrush}" />
                                       <!-- Can I access the Fill property of the Path inside Button and set it to Black? -->
                                            </ObjectAnimationUsingKeyFrames>
                                            </Storyboard>
                                        </VisualState>
                   </VisualStateGroup>
         </VisualStateManager.VisualStateGroups>
                            <Border x:Name="Border"
                                    Margin="0"
                                    Background="{TemplateBinding Background}"
                                    BorderBrush="{TemplateBinding BorderBrush}"
                                    BorderThickness="{TemplateBinding BorderThickness}">
                                <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                                    <Path x:Name="Circle"
                                          HorizontalAlignment="Center"
                                          VerticalAlignment="Center"
                                          Fill="Transparent"
                                          Stroke="White"
                                          StrokeThickness="2"
                                          UseLayoutRounding="False">
                                        <Path.Data>
                                            <EllipseGeometry Center="20, 20"
                                                             RadiusX="20"
                                                             RadiusY="20" />
                                        </Path.Data> 
                                  </Path>
                                <ContentPresenter x:Name="ContentPresenter"
                                                  Margin="{TemplateBinding Padding}"
                                                  HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                  VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                                  AutomationProperties.AccessibilityView="Raw"
                                                  Content="{TemplateBinding Content}"
                                                  ContentTemplate="{TemplateBinding ContentTemplate}"
                                                  ContentTransitions="{TemplateBinding ContentTransitions}" />

                            </Grid> 
                    </Border>
                 </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
             <Button Width="45"
                            Height="45"
                            Margin="0 0 0 20"
                            HorizontalAlignment="Right"
                            VerticalAlignment="Top"
                            Background="Transparent"
                            BorderThickness="0"
                            Command="{Binding LoginCommand}"
                            Style="{StaticResource CnSCircleButtonStyle}">
                        <Grid Width="44" Height="44">
                            <Path Name="Test"
                                  Width="20"
                                  Height="20"
                                  Margin="0 0 23 5"
                                  Data="{StaticResource tickIcon}"
                                  Fill="White"
                                  Stretch="Uniform" />
                        </Grid>
                    </Button>

页面内部:

   <Style x:Key="CnSCircleButtonStyle" TargetType="Button">
            <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="Button">
                                <Grid>
                                    <VisualStateManager.VisualStateGroups>
                                        <VisualStateGroup x:Name="CommonStates">
                                            <VisualState x:Name="Normal" />
                                            <VisualState x:Name="PointerOver">
                                                <Storyboard>
                                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Circle" Storyboard.TargetProperty="Fill">
                                                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonPointerOverBackgroundThemeBrush}" />
                                                </ObjectAnimationUsingKeyFrames>

                                            </Storyboard>
                                        </VisualState>
                                        <VisualState x:Name="Pressed">
                                            <Storyboard>
                          <ObjectAnimationUsingKeyFrames Storyboard.TargetName="Circle" Storyboard.TargetProperty="Fill">
                                                    <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource AppBarItemForegroundThemeBrush}" />
                                       <!-- Can I access the Fill property of the Path inside Button and set it to Black? -->
                                            </ObjectAnimationUsingKeyFrames>
                                            </Storyboard>
                                        </VisualState>
                   </VisualStateGroup>
         </VisualStateManager.VisualStateGroups>
                            <Border x:Name="Border"
                                    Margin="0"
                                    Background="{TemplateBinding Background}"
                                    BorderBrush="{TemplateBinding BorderBrush}"
                                    BorderThickness="{TemplateBinding BorderThickness}">
                                <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                                    <Path x:Name="Circle"
                                          HorizontalAlignment="Center"
                                          VerticalAlignment="Center"
                                          Fill="Transparent"
                                          Stroke="White"
                                          StrokeThickness="2"
                                          UseLayoutRounding="False">
                                        <Path.Data>
                                            <EllipseGeometry Center="20, 20"
                                                             RadiusX="20"
                                                             RadiusY="20" />
                                        </Path.Data> 
                                  </Path>
                                <ContentPresenter x:Name="ContentPresenter"
                                                  Margin="{TemplateBinding Padding}"
                                                  HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                                  VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                                  AutomationProperties.AccessibilityView="Raw"
                                                  Content="{TemplateBinding Content}"
                                                  ContentTemplate="{TemplateBinding ContentTemplate}"
                                                  ContentTransitions="{TemplateBinding ContentTransitions}" />

                            </Grid> 
                    </Border>
                 </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
             <Button Width="45"
                            Height="45"
                            Margin="0 0 0 20"
                            HorizontalAlignment="Right"
                            VerticalAlignment="Top"
                            Background="Transparent"
                            BorderThickness="0"
                            Command="{Binding LoginCommand}"
                            Style="{StaticResource CnSCircleButtonStyle}">
                        <Grid Width="44" Height="44">
                            <Path Name="Test"
                                  Width="20"
                                  Height="20"
                                  Margin="0 0 23 5"
                                  Data="{StaticResource tickIcon}"
                                  Fill="White"
                                  Stretch="Uniform" />
                        </Grid>
                    </Button>


这样,我可以很容易地用白色填充圆形路径。但我也希望按钮内的路径用黑色填充。因此,我的问题是:当按下VisualState搜索ContentPresenter时,xaml中是否有任何方法可以将其填充属性设置为黑色?

您是否尝试过
AppBarButton
[?您可以设置Icon=“Back”谢谢……这正是我需要的。如果您想设置路径,可以使用PathIcon属性。