在WPF中点击圆形“启动-停止”按钮时更改背景图像

3

这个问题的启发,我会稍微复杂化一下这个问题。

我的目标是一个圆形按钮(带有背景图像,如enter image description here),其功能类似于“启动-停止”按钮:

1)第一次单击更改按钮图像为“停止”图像并启动某些计算函数(Process、Task等)

2)再次单击更改按钮图像为原始的“开始”图像并停止该函数。

按钮代码如下:

<Button  x:Name="btnStartStop" Width="72" Height="72" Content="" Margin="180,0,372,94" VerticalAlignment="Bottom" d:LayoutOverrides="VerticalAlignment">
        <Button.Template>
            <ControlTemplate>
                <Grid>
                    <Ellipse>
                        <Ellipse.Fill>
                            <ImageBrush ImageSource="Images/Start.jpg"/>
                        </Ellipse.Fill>
                    </Ellipse>
                </Grid>
            </ControlTemplate>
        </Button.Template>
</Button>

谢谢。

P.S. @Sheridan 要求提到他的名字,也许他可以帮助我。

更新 我的按钮看起来与背景图片完全相同 - 它是圆形且没有边框,可点击区域与图像匹配(它是圆形的)。那个圆形图像之外的所有内容都是透明的,不会触发点击事件。这就是为什么我必须使用椭圆形的原因。

2个回答

1
您可以使用DataTrigger来更改按钮的背景图像。以下链接可能会有所帮助。

WPF单击时更改按钮背景图像

以下是相同问题的解决方案。根据您的需求,在我的端口工作正常。

enter image description here

enter image description here


从您的[第一个链接](https://dev59.com/D2025IYBdhLWcg3wfmLw#5973592)的编程方法(不使用DataTriggers)最适合我。 但是我无法使用btnStartStop.Content = FindResource(“ Stop”),因为正如您所看到的,我需要为Button内Ellipse中的ImageBrush设置图像源。 我该怎么做? - bairog
谢谢您的帮助,但是您没有正确理解我的按钮长什么样子(可点击区域应该与图片完全一致-一个圆形)。我已经更新了我的原始帖子。 - bairog
您可以使用控件模板创建圆形按钮。以下链接可能会有所帮助--http://www.codeproject.com/Articles/32257/A-Style-for-Round-Glassy-WPF-Buttons - J R B
谢谢。我已经测试了你回答中的控件模板和代码组合,对我来说是有效的。 - bairog

0
这实际上听起来像是一个ToggleButton或者甚至一个自定义的CheckBox的完美使用案例。
您可以提供自己的控件模板,使用两个不同的图像/图形来表示两个不同的切换状态。通过使用VisualStateManager,您可以声明在转换过程中要执行的操作。

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