Windows Phone - 禁用按钮背景

3

我又来问一个关于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中使用样式或其他方式设置IsDisabled = false的按钮的自定义背景?

您还可以创建自定义按钮类,并在那里设置禁用视图状态。在此处查看不同控件的样式:http://blogs.msdn.com/b/flaviencharlon/archive/2012/12/04/default-styles-and-templates-of-xaml-controls-for-windows-store-apps.aspx - user2509848
2个回答

3
据我所知,Style Triggers 只适用于WPF,不适用于WP8.1/WIN8.1。因此,您需要使用 Visual State Manager 来实现您想要的效果。请前往 UI 设计界面,然后在 VS2013 左侧的 Document Outline 中找到您的按钮,右键单击 > Edit Template -> Edit a Copy。这将为该特定按钮创建一个自定义样式。您需要更改按钮的禁用状态,请将其更改为......
...
<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>
....

现在,如果您将该新样式设置为按钮的样式,您将得到您想要的效果。

0

在VS2013的左侧,找到文档大纲。找到你的按钮,右键单击>编辑模板->编辑副本

菜单格式/修改模板/修改副本。 这将在xaml中添加以下内容:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接