gpt4 book ai didi

c# - 在 WPF 列表框中上下移动项目

转载 作者:太空狗 更新时间:2023-10-29 18:01:12 25 4
gpt4 key购买 nike

我有一个列表框,里面有一堆值。我还有一个向上按钮和一个向下按钮。使用这些按钮,我想向上/向下移动列表框中的选定项目。我在执行此操作时遇到了问题。

到目前为止,这是我的代码:

    private void btnDataUp_Click(object sender, RoutedEventArgs e)
{

int selectedIndex = listBoxDatasetValues.SelectedIndex; //get the selected item in the data list

if (selectedIndex != -1 && selectedIndex != 0) //if the selected item is selected and not at the top of the list
{
//swap items here
listBoxDatasetValues.SelectedIndex = selectedIndex - 1; //keep the item selected
}


}

我不知道如何交换值!任何帮助将不胜感激!

最佳答案

由于您已通过使用 ItemsSource 绑定(bind)到 ObservableCollection 来填充列表框,因此您无法修改列表框的 Items 属性。

只有Items集合为空时才能设置ItemsSource,只有ItemsSource为null时才能修改Items。

否则你会得到错误“Operation is not valid while ItemsSource is in use...”

您需要做的是修改底层集合,因为它是一个 ObservableCollection,ListBox 将反射(reflect)这些变化。

以下代码展示了如何通过交换集合中的项目来上下移动项目。

相应的 XAML 只包含一个名为 lbItems 的列表框和 2 个连接事件处理程序的按钮。

public partial class MainWindow : Window
{
private ObservableCollection<string> ListItems = new ObservableCollection<string>
{
"Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6"
};

public MainWindow()
{
InitializeComponent();
lbItems.ItemsSource = this.ListItems;
}

private void up_click(object sender, RoutedEventArgs e)
{
var selectedIndex = this.lbItems.SelectedIndex;

if (selectedIndex > 0)
{
var itemToMoveUp = this.ListItems[selectedIndex];
this.ListItems.RemoveAt(selectedIndex);
this.ListItems.Insert(selectedIndex - 1, itemToMoveUp);
this.lbItems.SelectedIndex = selectedIndex - 1;
}
}

private void down_click(object sender, RoutedEventArgs e)
{
var selectedIndex = this.lbItems.SelectedIndex;

if (selectedIndex + 1 < this.ListItems.Count)
{
var itemToMoveDown = this.ListItems[selectedIndex];
this.ListItems.RemoveAt(selectedIndex);
this.ListItems.Insert(selectedIndex + 1, itemToMoveDown);
this.lbItems.SelectedIndex = selectedIndex + 1;
}
}
}

关于c# - 在 WPF 列表框中上下移动项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12540457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com