有许多关于如何上下移动MyModule
|_assets/test.txt
|_lib/
|_pubspec.yaml
的示例-但只有在知道ListBoxItem
类型的情况下。
如果ListBox.ItemsSource
类型只是ListBox.ItemsSource
,谁能帮助共享一些通用代码?
我需要这样的代码来上下移动IEnumerable
,无论是否在XAML,代码隐藏或ViewModel中设置了ListBoxItem
。在后一种情况下,很有可能是ItemsSource
。
答案 0 :(得分:1)
只需将列表转换为对象即可。这是一个在双击事件中将最后一项移到第一项的示例:
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 >
在这里发挥作用