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不能很好地更新项目。这是一个例子:
当我在ListView属性更改后立即更改itemsSource时 - 它运行良好。但是,我想避免它并在内部更新ListView。