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));