重新排列其中包含多个项目的堆栈面板 - WPF 和 C#

Rearrange stackpanels with a number of items in them - WPF and C#

我目前有七个不同的面板,其中包含按钮、文本框和其他项目。每个面板在水平方向上都很长,目前彼此堆叠在一起,所有面板都在滚动查看器内,开始时不可见。 Above the scroll viewer is a listbox with the names of each of the seven different panels and when one is selected, that panel is made visible.我正在尝试找到一种方法,以便在从列表框中选择一个面板时,将该面板移动到滚动查看器的顶部。我看过项目控制示例,但他们没有说明在这种情况下如何控制组或面板中的多个项目。抱歉,如果这有点令人困惑,感谢您的帮助。

首先,您在 ScrollViewer 中使用的是哪个主容器面板?正如您所说,7 个面板堆叠在一起,所以我假设您在 ScrollViewer 中有一个 StackPanel

现在,您需要操作 Children collectionStackPanel。 例如;

<ScrollViewer Margin="0,61,0,0">
            <StackPanel x:Name="MainPnl">
             ... 7 panels ...
            </StackPanel>
 </ScrollViewer

代码:

    private void ComboBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
    {
        var item = (sender as ComboBox).SelectedItem;
        string name = (item as ComboBoxItem).Content.ToString();

        Panel pnl = FindName(name) as Panel;

        int indexof = MainPnl.Children.IndexOf(pnl);
        MainPnl.Children.RemoveAt(indexof);

        MainPnl.Children.Insert(0, pnl);
    }