2016-04-29 48 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