2014-07-21 163 views
0

我有一個模板按鈕。更改按鈕圖像源WPF

我想從背後的代碼動態更改圖像源。

這裏是我的代碼:

<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無法識別。

有什麼方法可以改變按鈕的圖像源的方式?

回答

0

您可能喜歡通過按鈕的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)); 
+0

謝謝。這有幫助。順便說一下,有沒有辦法讓按鈕恢復其「點擊效果」? – Idanis

+0

不知道你點擊效果是什麼意思。 – Clemens

+0

在將圖像添加到按鈕之前,該按鈕在點擊時具有3D視覺行爲。現在按鈕是靜態的,即使點擊它,我也只能看到圖像。沒有跡象表明按鈕被點擊。點擊按鈕時,有什麼方法可以「恢復」視覺效果? – Idanis

1

您可以嘗試使用FrameworkTemplateFindName方法:

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