编辑#2:
public void ReverseOrderRegBtns()
{
ICollectionView view = CollectionViewSource.GetDefaultView(GlobalObservableCol.regBtns);
view.SortDescriptions.Add(new SortDescription("ReverseOrder", ListSortDirection.Ascending));
view.Refresh();
}
不确定如何适应ICollectionView,它还会中断正在执行某些逻辑的计时器。出于某种原因,它会中断我创建按钮时开始计数的时间。
我的应用程序有多个计时器,因此创建的按钮每隔x秒就可以获得可能的新内容更新。
编辑:
数据绑定如下所示:
<ListBox x:Name="lbRegistration" ItemsSource="{Binding regBtnsReverse, ElementName=Window}" Background="{x:Null}"
旧: public ObservableCollection RegBtns { 得到 { if(GlobalObservableCol.regBtns == null) { return new ObservableCollection(); } 返回GlobalObservableCol.regBtns; } }
新的(不再有效),反之在ObserableCol类
public IEnumerable<RegistrationButton> RegBtns
{
get
{
return GlobalObservableCol.regBtnsReverse;
}
}
我在一个静态类中创建了IEnumerable,其中ObservableCollection列表可用。
当我的数据绑定是IENumerable时,我似乎无法绑定。如何绑定NumbersReverse 位于我的MainWindow.xls的其他类中的方法?
我有一个ObservableCollection,它包含自定义样式的WPF按钮。
这些项目会动态创建并添加到自定义滑块控件(列表框)中。 例如按钮1,按钮2,按钮3,......
我想要的只是相反。
例如按钮3,按钮2,按钮1。 这听起来像一个链表,但我的整个应用程序已经在整个逻辑中使用了这个Observable Collection。
当按钮显示在UI中时,最后添加的按钮应该作为我滑块上的第一个项目(即列表框控件)。
我怎么能把它拉下来?
谢谢, PeterP
答案 0 :(得分:3)
<ListBox ItemsSource="{Binding Foo}"/>
private ObservableCollection<RegButtton> RegBtns = new...;
public ICollectionView Foo { get; set; }
Foo = CollectionViewSource.GetDefaultView(RegBtns);
Foo.SortDescriptions.Add(new SortDescription("SomePropertyName", ListSortDirection.Ascending));
Foo.Refresh();
答案 1 :(得分:2)
代码中的某处应该有myCollection.Add( someButton )
。
将其替换为myCollection.Insert( 0, myButton )
,您就完成了。
答案 2 :(得分:1)
我不知道你使用什么框架。我会在我的视图模型中做一些事情:
public ObservableCollection<int> Numbers { get; private set; }
public IEnumerable<int> NumbersReverse
{
get
{
return Numbers.Reverse();
}
}
我会使用NumbersReverse作为数据源:
<ListBox Name="listBox1" ItemsSource="{Binding NumbersReverse}"/>
当然还有很多其他方法可以做到这一点。你必须弄清楚你的情况最好...
编辑: 例如如果你不关心任何其他目的的物品的顺序,那么stijn提供的解决方案要好得多。