アニメーションを使用してグループ化されたデータグリッド内の行の翻訳を別のグループに表示する際に問題が発生します。アニメーションは起こりますが、その行はの後ろにあるの後ろに移動し、新しい位置に移動します。データグリッド移動のアニメーション
グループ化はセルの1つの内容に基づいて行われるため、ユーザーがコンテンツを変更すると、その行は新しいグループに移動します。ここでは、グリッドを示し、いくつかのXAMLです:
<DataGrid x:Name="dataGrid" AutoGenerateColumns="False" CanUserAddRows="False">
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<StackPanel>
<TextBlock Text="{Binding Name}"/>
<ItemsPresenter />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="First Name" Binding="{Binding FirstName}"/>
<DataGridTextColumn Header="Last Name" Binding="{Binding LastName}"/>
<DataGridTextColumn Header="Email" Binding="{Binding Email}"/>
<DataGridTemplateColumn Header="Country">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Country}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Country, UpdateSourceTrigger=PropertyChanged}" TextChanged="TextBoxBase_OnTextChanged"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
は、私はTextChangedイベントハンドラでそれを発射しています、アニメーションを表示します。そこにコードが新しいグループにDataGridRow及び目標点の位置を、アニメーションを実行するためのメソッドを呼び出し:
private void Animate(FrameworkElement element, Point target)
{
if (element != null)
{
Point sourcePoint = element.PointToScreen(new Point(0, 0));
double yOffset = target.Y - sourcePoint.Y;
element.SetValue(Panel.ZIndexProperty, 10); // this doesn't help
TranslateTransform translateTransform = new TranslateTransform();
element.RenderTransform = translateTransform;
Duration duration = new Duration(TimeSpan.FromSeconds(3));
DoubleAnimation anim = new DoubleAnimation(0, yOffset, duration);
translateTransform.BeginAnimation(TranslateTransform.YProperty, anim);
}
}
これは動作しますが、他のグループに下降行が後ろ他に行く示されています行;すなわち移動する行は途中の他の行の下に隠れている。 DataGridRowにZIndexを設定しても何もしないようです。また、行をまで動かすと、動いている行が他の行に表示されます。私はTextChanged以外のイベントからアニメーションを起動しようと試みましたが(これはとにかくやり遂げる必要があると思いますが)、私は問題に見えるものは見つけられませんでした。
ありがとうございました。