我有一个DockPanel,其中一些图像嵌套在里面。
<DockPanel x:Name="ControlStack"
Background="LightGray"
MouseLeftButtonUp="ECIControlStack_MouseLeftButtonUp">
<DockPanel.Resources>
<Style TargetType="{x:Type Image}">
<Setter Property="Margin" Value="0,0,3,0"/>
</Style>
</DockPanel.Resources>
<Image x:Name="FirstImage" Source="{Binding GpsImage}" Height="36" Width="36"/>
<Image x:Name="SecondImage" Source="{Binding YellowIcon}" Height="36"/>
<Image x:Name="ThirdImage" Source="{Binding RedIcon}" Height="36"/>
<Image x:Name="FourthImage" Source="{Binding GreenIcon}" Height="36"/>
</DockPanel>
我想以编程方式从后面的代码或任何地方更改项目的顺序。
只是做一些一般的修修补补,试图让对象移动。
我尝试了以下内容:
Rect rectangleBounds = new Rect();
rectangleBounds = ControlStack.RenderTransform.TransformBounds(
new Rect(0, 0, ControlStack.Width, ControlStack.Height));
Canvas.SetLeft(FirstImage, rectangleBounds.Left + 100);
Canvas.SetRight(FirstImage, rectangleBounds.Right + 100);
Canvas.SetTop(FirstImage, rectangleBounds.Top + 100);
Canvas.SetBottom(FirstImage, rectangleBounds.Bottom + 100);
但无济于事。
1.我不认为这是有效的,因为它位于dockpanel而不是画布儿童?
2.即使它确实有效,它也会自由移动,我假设销毁了dockPanel堆栈顺序。
谢谢你看看。
答案 0 :(得分:0)
如评论中所述,通过简单地调整图像的索引来更改顺序是最简单的。我最终使用了以下内容:
private void SetTopImage()
{
Image NewTopImage = FindIconPriority(); // Finds what Icon I would like to have in front.
ControlStack.Children.Remove(NewTopImage);
ControlStack.Children.Insert(0, NewTopImage);
}