Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改按钮图像源WPF_C#_Wpf_Button_Controltemplates - Fatal编程技术网

C# 更改按钮图像源WPF

C# 更改按钮图像源WPF,c#,wpf,button,controltemplates,C#,Wpf,Button,Controltemplates,我有一个带模板的按钮 我想从代码后面动态更改图像源代码 这是我的密码: <Button Height="48" HorizontalAlignment="Left" Name="playSequence" VerticalAlignment="Top" Width="49" Click="PlaySequenceButton_Click" Grid.Column="1" Margin="10,0,0,0"> <Button.Template> &l

我有一个带模板的按钮

我想从代码后面动态更改图像源代码

这是我的密码:

<Button Height="48" HorizontalAlignment="Left" Name="playSequence" VerticalAlignment="Top" Width="49" Click="PlaySequenceButton_Click" Grid.Column="1" Margin="10,0,0,0">
    <Button.Template>
        <ControlTemplate>
            <Border HorizontalAlignment="Center" VerticalAlignment="Center" >
                <Image Name="PlayImage" Source="Play.png" Width="45" Height="41" Stretch="Fill"/>
            </Border>
        </ControlTemplate>
   </Button.Template>
</Button>
无法识别播放图像


有没有办法这样更改按钮的图像源?

您可以尝试使用
框架模板的
FindName
方法:

playSequence.Template.FindName("PlayImage", playSequence)
            .SetValue(Image.SourceProperty, 
                      new BitmapImage(new Uri(@"Pause.png", UriKind.Relative)));

您可能更喜欢通过按钮的
Content
属性以如下样式设置图像:

<Button ...>
    <Button.Style>
        <Style TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border ...>
                            <Image Source="{TemplateBinding Content}"
                                   Width="45" Height="41" Stretch="Fill"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="Content">
                <Setter.Value>
                    <BitmapImage UriSource="Play.png"/>
                </Setter.Value>
            </Setter>
        </Style>
    </Button.Style>
</Button>

谢谢这很有帮助。顺便问一下,有没有办法让按钮返回其
单击效果
?不确定单击效果是什么意思。在我将图像添加到按钮之前,按钮在单击时具有3D视觉行为。现在按钮是静态的,我只能看到图像,即使我点击它。没有迹象表明该按钮已被单击。当我点击按钮时,有没有办法“恢复”这种视觉效果?这是因为默认的按钮样式比我们这里的要复杂得多。请参阅以获得概述,并特别注意不同的视觉状态。谢谢,这真的很有帮助!
<Button ...>
    <Button.Style>
        <Style TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border ...>
                            <Image Source="{TemplateBinding Content}"
                                   Width="45" Height="41" Stretch="Fill"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Setter Property="Content">
                <Setter.Value>
                    <BitmapImage UriSource="Play.png"/>
                </Setter.Value>
            </Setter>
        </Style>
    </Button.Style>
</Button>
playSequence.Content = new BitmapImage(new Uri(@"Pause.png", UriKind.Relative));