Короче говоря, вы можете создать цикл, который пересекает элементы внутри контейнера и устанавливает для них BorderBrush
и BorderThickness
.
Это простой пример кода:
ColorBorderPage.xaml
<StackPanel>
<controls:WrapPanel x:Name="ItemsContainer" HorizontalAlignment="Center" Width="160" Height="120" Margin="0,50">
<StackPanel Background="Gray" Width="100" Height="50" Margin="0,0,10,10"/>
<StackPanel Background="Gray" Width="50" Height="50" Margin="0,0,0,10"/>
<StackPanel Background="Gray" Width="160" Height="50"/>
</controls:WrapPanel>
<Button Content="Click Me" Click="Button_Click" HorizontalAlignment="Center"/>
</StackPanel>
Я создал панель с именем ItemsContainer
, которая заменяет изображениес StackPanel
и добавьте кнопку для запуска анимации.
ColorBorderPage.xaml.cs
private async void Button_Click(object sender, RoutedEventArgs e)
{
int count = ItemsContainer.Children.Count;
int index = 0;
while (true)
{
var item = ItemsContainer.Children[index] as StackPanel;
item.BorderBrush = new SolidColorBrush(Colors.LightGreen);
item.BorderThickness = new Thickness(3);
await Task.Delay(3000);
item.BorderThickness = new Thickness(0);
index = index == count - 1 ? 0 : index + 1;
}
}
В коде, сначала получив числодочерние элементы в контейнере, затем установка Border
один за другим через цикл while и перезапуск при завершении цикла до конца.
В соответствии с вашими требованиями к анимации вы можете использовать Task.Delay()
, что приведет к задержкеуказанное время, прежде чем перейти к следующему шагу.
Это только пример, но он должен быть в состоянии удовлетворить ваши потребности, вам просто нужно заменить StackPanel
на Image
.
С уважением.