1

我在复合 Prism MVVM 应用程序中有一个 ItemsControl 区域

<ItemsControl Regions:RegionManager.RegionName="NotificationRegion" AllowDrop="True" ClipToBounds="True" HorizontalAlignment="Right" Margin="0,40,20,20" Width="280" />

现在我想在该区域显示我的 NotificationViews,如下所示: 在此处输入图像描述

我只需导航到视图并将它们添加到我的 ItemsControl 区域。但问题是新视图总是添加到底部。我真的希望新视图显示在顶部。有什么办法可以做到这一点?非常感谢您提前。

4

1 回答 1

1

我想你会发现这有帮助:Sorting views in Prism/MEF

基本上:

public MainView( ) 
    {
        InitializeComponent( );

        ObservableObject<IRegion> observableRegion = RegionManager.GetObservableRegion( ContentHost );

        observableRegion.PropertyChanged += ( sender, args ) =>
        {
            IRegion region = ( (ObservableObject<IRegion>)sender ).Value;
            region.SortComparison = CompareViews;
        };
    }

    private static int CompareViews( object x, object y )
    {
        IPositionView positionX = x as IPositionView;
        IPositionView positionY = y as IPositionView;
        if ( positionX != null && positionY != null )
        {
            //Position is a freely choosable integer
            return Comparer<int>.Default.Compare( positionX.Position, positionY.Position );
        }
        else if ( positionX != null )
        {
            //x is a PositionView, so we favour it here
            return -1;
        }
        else if ( positionY != null )
        {
            //y is a PositionView, so we favour it here
            return 1;
        }
        else
        {
            //both are no PositionViews, so we use string comparison here
            return String.Compare( x.ToString( ), y.ToString( ) );
        }
    }

您会注意到该区域有一个 SortComparison 属性。您只需为首先订购最新视图的区域创建一个自定义 SortComparison。

于 2012-12-20T16:16:23.673 回答