我有一个Stackpanel与5个孩子。
<StackPanel Orientation="Horizontal">
<TextBlock >1</TextBlock>
<TextBlock >2</TextBlock>
<TextBlock >3</TextBlock>
<TextBlock >4</TextBlock>
<TextBlock >5</TextBlock>
</StackPanel>
我想改变孩子的位置[2]。
如何在运行时改变元素的位置?
3条答案
按热度按时间6vl6ewon1#
它可以通过跟踪StackPanel的Children-property的index-element来实现。我给你发了一些示例代码来演示它的工作原理。例如,考虑以下代码:
它获取当前选中的TextBlock并将其索引向上移动一个。然后您需要通过删除并重新插入来更新StackPanel的Children-property。
我怀疑你是否想使用StackPanel来实现这种目的。使用ItemsControl要容易得多,比如ListBox,因为它们可以绑定到T的ObservableCollection。一旦绑定的集合被更新,控件也会被更新。
我希望这能有所帮助。示例代码可以下载here。
q9rjltbz2#
这个问题有点不清楚,因为意图不是很明确。下面的代码允许您根据Text-content-property移动TextBlock:
如果您有其他意图,例如使用鼠标选择TextBlock,则可能需要使用不同的技术,例如在设计时在Visual Studio界面中看到的技术。
希望这能帮上忙。
r1zk6ea13#
您可以使用
Children.Insert
方法将Element插入到StackPanel
的插槽中。这里是documentation