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

これが役立つと思います: 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 に答える