Windows Phone - 禁用的按钮背景

时间:2014-10-08 02:34:04

标签: xaml windows-phone-8.1 visualstatemanager

我再次提出另一个关于Windows Phone的问题。

我刚创建了一些自定义按钮,并将它们用作按钮上的背景。我还创建了一个灰色按钮,显示为禁用按钮。

但如果我禁用button1.isEnabled = false,背景就会消失

在网上搜索我找到了一种使用Style标签的方法,但我之前从未使用过。我尝试了但是,它离开了我的问题,有人可以给我一个例子吗?我的代码:

<Button x:Name="btSalvar" Content="Salvar Cor" Margin="68,477,70,0" VerticalAlignment="Top" BorderBrush="{x:Null}" BorderThickness="0" Height="100" Click="btSalvar_Click" ClickMode="Press" IsEnabled="True" Foreground="White">
    <Button.Style>
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="false">
                <Setter Property="Background" Value="/Imagens/Buttons/ButtonGray01.png"/>
            </Trigger>
        </Style.Triggers>
    </Button.Style>
</Button>

有没有办法在Windows Phone 8.1中使用Style或其他方式在IsDisabled = false的按钮上设置自定义背景?

2 个答案:

答案 0 :(得分:3)

据我所知,样式触发器是WPF的东西,而不是WP8.1 / WIN8.1

因此,您必须使用可视状态管理器来完成您想要的操作。因此,请转到UI Designer,然后转到VS2013左侧的文档大纲。找到您的按钮,右键单击&gt;编辑模板 - &gt;编辑副本。这将为该特定按钮创建自定义样式。

您想要更改按钮的禁用状态,请将其更改为.....

...
<VisualState x:Name="Disabled">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonDisabledForegroundThemeBrush}"/>
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="Border">
            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonDisabledBorderThemeBrush}"/>
        </ObjectAnimationUsingKeyFrames>

        <!-- here is where we need to change -->
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.Background).(ImageBrush.ImageSource)" Storyboard.TargetName="Border">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Assets/YOUR_IMAGE.png"/>
        </ObjectAnimationUsingKeyFrames>

    </Storyboard>
</VisualState>
....

现在,如果您将新样式设置为按钮的样式,您将获得所需的内容。

答案 1 :(得分:0)

在法语界面

  

VS2013左侧的文档大纲。找到您的按钮,右键单击&gt;编辑模板 - &gt;编辑副本

菜单格式/修饰符lemodèle/ Modifier une copie。 Cela rajoute dans le xaml le