2017-10-09 21 views
0

所以基本上我有一個簡單的StackPanel,它包含多個Canvas。 我想在Code中替換StackPanel中兩個Canvas的位置。非常像這樣:在StackPanel中交換兩個Canvas的位置

<StackPanel> 
    <Canvas Name="canvas1"> 
    </Canvas> 

    <Canvas Name="canvas2"> 
    </Canvas> 

    <Canvas Name="canvas3"> 
    </Canvas> 
</StackPanel> 

什麼是在C#中將canvas1與canvas2交換最簡單的方法?

+0

它必須是一個StackPanel?你不能使用網格嗎?也許你可以使用列/行的變量,然後交換這些。 如果不是,我認爲你可以得到一個StackPanel的引用,獲取其子元素的引用,然後改變它們的位置 – rmjoia

+0

[WPF StackPanel控件順序]的可能重複(https://stackoverflow.com/questions/1398548/wpf-stackpanel-controls-order) – Sinatr

回答

1

你可以將其刪除,並在另一個位置Children收集StackPanel內插入:

stackPanel.Children.RemoveAt(0); 
stackPanel.Children.Insert(1, canvas1); 

<StackPanel x:Name="stackPanel">... 
+0

使用[InternalChildren]的文檔(https://msdn.microsoft.com/en-us/library/system.windows.controls.panel.internalchildren(v = vs.110) .aspx)面板派生類。支持Remove/Instert/InsertAt - Methods的相同[UIElementCollection](https://msdn.microsoft.com/en-us/library/system.windows.controls.uielementcollection(v = vs.110).aspx)。 –

+1

InternalChildren是內部的。兒童是公共的。 – mm8

+0

好的,所以只有你自己覆蓋Panel時纔可用。謝謝,錯過了。 –