2010-12-01 3 views
0

原因:は私がそうのように私のコラムの一つに適用されているDataGridCellテンプレート作成した例外

<DataGridTextColumn Binding="{Binding LastUpdated}" 
    IsReadOnly="True" CanUserReorder="False" 
    CanUserSort="False" CanUserResize="False" 
    CellStyle="{StaticResource DataGridCellStyle1}" 
/> 

を、テンプレートは以下のようになります。

<ControlTemplate TargetType="{x:Type DataGridCell}"> 
    <ControlTemplate.Resources> 
     <Storyboard x:Key="CellChangedStoryboard"> 
      <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)" Storyboard.TargetName="DGC_Border"> 
       <EasingColorKeyFrame KeyTime="0" Value="LightGreen"/> 
       <EasingColorKeyFrame KeyTime="0:0:8" Value="Red"/> 
      </ColorAnimationUsingKeyFrames> 
     </Storyboard> 
    </ControlTemplate.Resources> 
    <Border x:Name="DGC_Border" Background="Red"> 
     <ContentPresenter /> 
     <i:Interaction.Triggers> 
       <ei:TimerTrigger MillisecondsPerTick="1000" > 
        <ei:ControlStoryboardAction Storyboard="{StaticResource CellChangedStoryboard}"/> 
       </ei:TimerTrigger> 
     </i:Interaction.Triggers> 
    </Border> 
</ControlTemplate> 

でこの例では、Blend TimerTriggerを使用してアニメーションをトリガーしていますが、アニメーションをどのようにトリガーしても問題ありません。(グリッドをクリックするとすぐにクラッシュします)

ストーリーボードを削除すると、ソート時にクラッシュしません。

例外はです。InvalidOperationException: 'System.Windows.Controls.Border'の名前スコープに 'DGC_Border'という名前が見つかりません。

DataGridがソートすると、セル/列が破棄されるか、またはそれ以外の方法で混乱し、実行中のアニメーションがアニメーション化していたセルを見つけることができなくなると思われます。

なぜ例外が発生し、それを停止するのですか? ありがとう

アップデート:<ControlTemplate.Triggers>を使用してStoryBoardを起動すると、正常に動作しているようです。残念ながら、バウンドプロパティが変更されたときにストーリーボードを再生する必要があるため、これは解決方法ではありません。

+0

本質的にバリデーションUIを再作成しようとしていますが、アニメーションがありますか? –

+0

いいえ、セルを更新するときにアニメーションを作成したい – Schneider

答えて

0

私が思い付くことができる最高のブレンドのトリガーを捨て、これを使用することでした。私は、グリッドをソートした後、すべてのアニメーションが私のために正しい動作ではありませんこれは、削除されていることがわかり

<Border x:Name="DGC_Border" Background="Red"> 
         <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" 
              Content="{Binding LastUpdated, NotifyOnTargetUpdated=True}"> 
          <ContentPresenter.Triggers> 
           <EventTrigger RoutedEvent="Binding.TargetUpdated"> 
            <BeginStoryboard Storyboard="{StaticResource RowChangedStoryboard}" /> 
           </EventTrigger> 
          </ContentPresenter.Triggers> 
         </ContentPresenter> 
        </Border> 

を - 私が欲しいですアニメーションは、中断した場所から続けるが、別の日には保存する必要があります。

関連する問題