2013-05-28 76 views
0

我有一個Grid,我基本上用作一個按鈕,我需要在鼠標按鈕關閉時將背景漸變更改爲另一個漸變。當釋放鼠標按鈕時,將其改回原來的顏色。另外,我還需要執行一些操作。我試圖在後面的代碼中完成此操作,但也許這可以在xaml中完成?我正在這樣做,因爲定製按鈕的外觀和感覺,我需要證明是更困難的。我怎麼去解決這個問題?WPF - 在MouseLeftButtonDown上更改網格backcolor

XAML:

<DockPanel LastChildFill="True" Width="40" Height="40" Margin="22,20,22,5"> 
    <Border BorderThickness="0,1,0,0" DockPanel.Dock="Top" BorderBrush ="#747474" /> 
    <Border BorderThickness="1,0,0,0" DockPanel.Dock="Left"> 
     <Border.BorderBrush> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#747474" Offset="0"/> 
       <GradientStop Color="#464648" Offset="1"/> 
      </LinearGradientBrush> 
     </Border.BorderBrush> 
    </Border> 
    <Border BorderThickness="0,0,1,0" DockPanel.Dock="Right"> 
     <Border.BorderBrush> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#747474" Offset="0"/> 
       <GradientStop Color="#464648" Offset="1"/> 
      </LinearGradientBrush> 
     </Border.BorderBrush> 
    </Border> 
    <Border BorderThickness="0,1,0,0" DockPanel.Dock="Bottom" BorderBrush ="#464648" /> 
    <Grid Width="38" Height="38"> 
     <Grid.Background> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#585858" Offset="0"/> 
       <GradientStop Color="#464648" Offset="1"/> 
      </LinearGradientBrush> 
     </Grid.Background> 
     <Image HorizontalAlignment="Center" VerticalAlignment="Center" Source="/common/printer_20.png" Stretch="None" /> 
    </Grid> 

回答

1

您可以通過多種方式來實現這一目標。

  1. 使用Style和視覺狀態。問題:執行命令會很髒。
  2. 將一個Behavior添加到Grid。分配鼠標事件並在代碼中更改Background。另外你可以執行一個命令。使用Trigger更改背景。使用MVVM Light執行Command

您更喜歡哪種方式?