2016-04-29 47 views
0

我有一個datagrid,其中的行顏色由我在我的rowstyle中轉換的級別參數決定。這很好,但現在我也想在使用鼠標進行拖放時暫時改變顏色並拖放(當我離開或放下時改回)。我設法改變顏色與此代碼:在WPF中的故事板彩色動畫之後回到舊的顏色

<DataGrid.RowStyle> 
      <Style TargetType="DataGridRow" BasedOn="{StaticResource MyDataGridRowStyle}"> 
       <Setter Property="Background" Value="{Binding Level,Converter={StaticResource LevelToIndentConverter}}" /> 
        <Style.Triggers> 
        <EventTrigger RoutedEvent="DataGridRow.DragEnter"> 
         <BeginStoryboard x:Name="DragHoverStoryboard"> 
          <Storyboard> 
           <ColorAnimation Storyboard.TargetProperty="Background.Color" 
           Duration="0:0:0" To="#41B1E1"/> 
          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger> 
        <EventTrigger RoutedEvent="DataGridRow.DragLeave"> 
         <BeginStoryboard> 
          <Storyboard> 
           <ColorAnimation Storyboard.TargetProperty="Background.Color" 
           Duration="0:0:0" To="Transparent" /> 
          </Storyboard> 
         </BeginStoryboard> 
        </EventTrigger> 
       </Style.Triggers> 
      </Style> 
     </DataGrid.RowStyle> 

問題是要回到原來的顏色。目前,我在DragLeave事件觸發器中將「To」設置爲透明,但我希望它是我的「舊」顏色。

我試圖做一個簡單的綁定(與我的setter相同),但我得到異常,並閱讀,你不能綁定彩色動畫。那麼有什麼我可以使用或解決這個問題嗎?總之我只是想這樣的:

  1. 鼠標進入一行拖放
  2. 行改變顏色X
  3. 鼠標離開行(或我滴)
  4. 行變回它的顏色Y(其中y對於不同的行是不同的,所以不是硬編碼的)。

回答

-1

然後屬性添加到您的動畫和刪除第二個動畫

FillBehavior="Stop" 
+0

哎,對不起,我忘了/是有點不清楚。這是當我做拖放,然後我認爲我必須做EventTriggers?如果不是解決方案會奏效。我更新了這個問題,使其更加明顯。 – user1776562