我编写了一个允许对列表框重新排序的行为。为了正常工作,ListBox 的 ItemsSource 必须是 ObservableCollection<...>,因此我可以调用 Move(from,to) 方法。
我的问题是:
如何将 ListBox.ItemsSource 转换为 ObservableCollection。
我已经尝试过:
ObservableCollection<object> test = listBox.ItemsSource as ObservableCollection<object>;
这是行不通的,因为 ObservableCollection 不支持协方差。
既然您知道要调用的方法,ObservableCollection<T>.Move
,您可以使用简单的反射:
var move = listBox.ItemsSource
.GetType()
.GetMethod("Move");
if (move != null)
{
move.Invoke(listBox.ItemsSource, new[] { old, new });
}
else
{
// IList fallback?
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)