c# - 具有未知类型项目的 ListBox - 如何向上/向下移动项目
问题描述
有很多关于如何ListBoxItem
向上或向下移动的示例——但前提是ListBox.ItemsSource
类型是已知的。
ListBox.ItemsSource
如果类型是简单的,任何人都可以帮助分享一些更通用的代码IEnumerable
吗?
我需要这样的代码ListBoxItem
向上/向下移动,无论ItemsSource
是在 XAML、代码隐藏或 ViewModel 中设置。在后一种情况下,它很可能是一个ObservableCollection
.
解决方案
只需将列表转换为对象即可。这是一个在双击事件期间获取最后一项并将其移动到第一项的示例:
private void LbFiles_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var sourceList = lbFiles.ItemsSource
.OfType<object>()
.ToList();
var moveLast = sourceList[sourceList.Count - 1];
sourceList.RemoveAt(sourceList.Count - 1);
var newList = new List<object>() { moveLast };
newList.AddRange(sourceList);
lbFiles.ItemsSource = newList;
}
XAML
<StackPanel Orientation="Horizontal">
<StackPanel.Resources>
<x:Array x:Key="FileNames" Type="system:String">
<system:String>C:\Temp\Alpha.txt</system:String>
<system:String>C:\Temp\Beta.txt</system:String >
<system:String>C:\Temp\Gamma.txt</system:String >
</ x:Array >
</ StackPanel.Resources >
<ListBox Name = "lbFiles"
ItemsSource = "{StaticResource FileNames}"
MouseDoubleClick = "LbFiles_MouseDoubleClick"
Margin = "10" />
</ StackPanel >
这是在行动
推荐阅读
- pytest - pytest - 更改某些测试文件的夹具范围
- css - 如果存在侧边栏,则为 3 列布局或 2 列布局
- datepicker - nuxt 上的 Vuetify 日期选择器问题
- python - Numpy 安装卡在 PEP 517 轮子上
- r - 如何计算特定值出现在R中data.frame列中的频率
- java - Communication Link Failure,最后一个数据包发送成功,驱动还没有收到服务器发来的任何数据包
- html - 当我在它之前放置一个 div 元素时,导航栏不起作用
- php-7.2 - 无限while循环在php7中不能正常工作还有其他选择吗?
- image-processing - ROI 检测 - 深度学习 - 参考资料
- javascript - React 原生饼图