启动ListView的完全重绘

时间:2013-12-19 22:16:16

标签: c# windows-runtime windows-store-apps

Currenlty我在运行时更改ListView行为(正常模式下的水平列表和捕捉模式下的垂直列表)。我的代码(在SizeChanged事件中启动):

myViewState = ApplicationView.Value;
ScrollViewer scroller = FindChild < ScrollViewer>( itemsListView );
WrapGrid wrapper = FindChild < WrapGrid >( itemsListView );
if ( scroller != null && wrapper != null )
{
    if ( myViewState == ApplicationViewState.Snapped )
    {
    wrapper.Orientation = Orientation.Horizontal;
    scroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled;
    scroller.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
    scroller.HorizontalScrollMode = ScrollMode.Disabled;
    scroller.VerticalScrollMode = ScrollMode.Enabled;
    }
    else
    {
    wrapper.Orientation = Orientation.Vertical;
    scroller.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
    scroller.VerticalScrollBarVisibility = ScrollBarVisibility.Disabled;
    scroller.HorizontalScrollMode = ScrollMode.Enabled;
    scroller.VerticalScrollMode = ScrollMode.Disabled;                      
    }
   // itemsSource change
}

但是ListView不能很好地更新项目。这是一个例子: screenshot

当我在ListView属性更改后立即更改itemsSource时 - 它运行良好。但是,我想避免它并在内部更新ListView。

0 个答案:

没有答案