3

编辑#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 { get { if (GlobalObservableCol.regBtns == null) { return new ObservableCollection(); } 返回 GlobalObservableCol.regBtns; } }

新的(不再有效),相反的在 ObserableCol 类中

public IEnumerable<RegistrationButton> RegBtns
        {
            get
            {
                return GlobalObservableCol.regBtnsReverse;
            }
        }

我在 ObservableCollection 列表可用的静态类中创建了 IEnumerable。

当我的数据绑定是 IENumerable 时,我似乎无法绑定。如何将位于其他类中的 NumbersReverse 方法绑定到我的 MainWindow.xls?


我有一个 ObservableCollection 包含自定义样式的 WPF 按钮。

这些项目被动态创建并添加到自定义滑块控件(列表框)上。例如按钮 1、按钮 2、按钮 3、...

我想要的恰恰相反

例如按钮 3、按钮 2、按钮 1。 这听起来像一个链表,但我的整个应用程序已经在整个逻辑中使用了这个 Observable Collection。

当按钮显示在 UI 中时,最后添加的按钮应作为我的滑块(即列表框控件)上的第一项放置。

我到底怎么才能做到这一点?

谢谢,彼得P

4

3 回答 3

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();
于 2012-04-18T11:30:01.207 回答
2

在您的代码中的某处应该有myCollection.Add( someButton ).

替换它,myCollection.Insert( 0, myButton )你就完成了。

于 2012-04-18T09:27:59.610 回答
1

不知道你用的是什么框架。我会在我的视图模型中做类似的事情:

public ObservableCollection<int> Numbers { get; private set; }
public IEnumerable<int> NumbersReverse
{
    get
    {
        return Numbers.Reverse();
    }

}

我会使用 NumbersReverse 作为数据源:

<ListBox Name="listBox1" ItemsSource="{Binding NumbersReverse}"/>

当然,还有很多其他方法可以做到这一点。你必须弄清楚在你的情况下什么是最好的......

编辑:例如,如果您出于任何其他目的不关心项目的顺序,那么 stijn 提供的解决方案要好得多。

于 2012-04-18T09:28:20.320 回答