У меня есть DockPanel с некоторыми изображениями, вложенными внутрь.WPF Arrange Panel Children
<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.I не думаю, что это работает, потому что оно находится в докпанели, а не в холсте.
2. Даже если он работал, он перемещается свободно, и я предполагаю уничтожить порядок стека док-станции.
Спасибо, что посмотрели.
Да, вы правы, вы не можете перемещать вещи в докпанели, за исключением перечислений панели док-станции или сложной логики смещения. http://msdn.microsoft.com/en-us/library/system.windows.controls.dock%28v=vs.110%29.aspx Чтобы сделать то, что вы хотите сделать, вам нужно изменить панель на холст , Вы можете сделать это и в сетке, но это сложнее ... –
Если вы действительно хотите «изменить порядок элементов», вы можете легко удалить элемент из коллекции «Дети» DockPanel и вставить его снова в другая позиция индекса. – Clemens