我在复合Prism MVVM应用程序中有一个ItemsControl区域
<ItemsControl Regions:RegionManager.RegionName="NotificationRegion" AllowDrop="True" ClipToBounds="True" HorizontalAlignment="Right" Margin="0,40,20,20" Width="280" />
现在我想在这个区域显示我的NotificationViews,如下所示:
我只是导航到视图,然后将它们添加到我的ItemsControl区域。但问题是新的View总是被添加到底部。我真的希望在顶部显示新的视图。有没有办法实现这个目标?非常感谢你提前。
答案 0 :(得分: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。