【问题标题】:Change button image source WPF更改按钮图像源 WPF
【发布时间】:2014-07-21 13:35:42
【问题描述】:

我有一个带有模板的按钮。

我想从后面的代码中动态更改图片来源。

这是我的代码:

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

当我输入这段代码时:

PlayImage.Source = new BitmapImage(new Uri(@"Pause.png", UriKind.Relative));

PlayImage 无法识别。

有没有办法以这种方式更改按钮的图像源?

【问题讨论】:

    标签: c# wpf button controltemplates


    【解决方案1】:

    您可以尝试使用FrameworkTemplateFindName 方法:

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

    【讨论】:

      【解决方案2】:

      您可能更喜欢通过 Button 的 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>
      

      现在您可以通过设置Content 属性来简单地更改图像:

      playSequence.Content = new BitmapImage(new Uri(@"Pause.png", UriKind.Relative));
      

      【讨论】:

      • 谢谢。这有帮助。顺便问一下,有什么方法可以让按钮返回其click effect
      • 不知道你说的点击效果是什么意思。
      • 在我将图像添加到按钮之前,该按钮在单击时具有 3D 视觉行为。现在按钮是静态的,即使单击它,我也只能看到图像。没有迹象表明该按钮已被单击。当我点击按钮时,有什么方法可以“恢复”那种视觉效果?
      • 这是因为默认按钮样式比我们这里的要复杂得多。请参阅 Button Styles and Templates 以获取概览并特别注意不同的视觉状态。
      • 谢谢,真的很有帮助!
      猜你喜欢
      • 2013-11-28
      • 1970-01-01
      • 2012-02-05
      • 2016-07-12
      • 2019-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多