Как получить доступ к дочерним элементам UIElement для добавления анимации

У меня есть в моем XAML юниформ-сетка, которая содержит некоторый UserControl. Каждый UserControl имеет Ellipse. Попытаться получить доступ к эллипсу, чтобы добавить анимацию, но невозможно получить дочерние элементы униформы.

Спасибо.

XAML:

<Grid Grid.Column="1" Grid.Row="2">
        <Separator Opacity="0" Height="20"/>

        <!-- Checkerboard -->
        <!-- ************ -->
        <UniformGrid Name="checkerboard" Height="540" Width="540" HorizontalAlignment="Center" VerticalAlignment="Center"/>

XAML.CS (добавить дочерние элементы) -> Cell — это пользовательский элемент управления объектом:

public void addCellToBoard(CellControl cell)
        {
            checkerboard.Children.Add(cell);
        }

Other.cs: когда я пытаюсь получить доступ к детям (последняя строка), это невозможно. Шахматная доска - это имя униформы пользовательского интерфейса, я не знаю, как получить доступ к рендерингу анимации. Когда я пытаюсь выполнить рендеринг в uniformgrid из имени checkerBoard, это работает с этим uiElement, но я хочу получить доступ к эллипсу (дочерним элементам), включенному в checkerBoard:

private void animation(CellControl cell)
        {
            Storyboard storyboard = new Storyboard();
            TimeSpan duration = new TimeSpan(0, 0, 1);
            DoubleAnimation animation = new DoubleAnimation();
            animation.From = 0.0;
            animation.To = 1.0;
            animation.Duration = new Duration(duration);
            Storyboard.SetTargetName(animation, othelloWindow.checkerboard.Name);
            Storyboard.SetTargetProperty(animation, new PropertyPath(Control.OpacityProperty));
            storyboard.Children.Add(animation);
            storyboard.Begin(othelloWindow.checkerboard.FindName(cell.ellipse.Name.ToString()));

        } 

person syca    schedule 07.12.2014    source источник


Ответы (1)


Кажется, это все, что вам нужно:

void animation(CellControl cell)
{
    var animation = new DoubleAnimation(0.0, 1.0, TimeSpan.FromSeconds(1.0));

    cell.ellipse.BeginAnimation(UIElement.OpacityProperty, animation);
} 
person Clemens    schedule 08.12.2014
comment
Спасибо большое все идеально :) - person syca; 09.12.2014