页面导航后扩展ExpanderView
我在我的UWP
应用程序中使用WPF
ExpanderView
( ExpanderRT )的端口来显示带有项目的可扩展标头。 当第一次启动应用程序并初始化MainPage
时,此工作正常。 但是,如果我导航到新页面然后返回到MainPage
则ExpanderView
看起来像是展开的,但不是它没有显示项目。 它应该与MainPage
首次初始化时的外观相同。 我抓住了一个GIF
来展示这种行为。
这是MainPage
上UserControl
的XAML
;
这是我用于导航的EventHandler
;
private void OnSettingsButtonChecked(object sender, RoutedEventArgs e) { ShellSplitView.IsPaneOpen = false; ViewModel.NavigationService.Navigate(typeof(SettingsPage)); }
如果你们中的任何人都知道为什么ExpanderView
有这么奇怪的行为,请给我一个提示 – 如果你需要我可以提供更多我的代码。
[UPDATE]
我注意到,当我在移动设备(智能手机或移动Windows 10模拟器)上运行应用程序时,只会出现此行为。 如果我在本地机器上执行应用程序, ExpanderView
工作正常。 当我使用后退按钮导航回MainPage
它按预期工作 – 我不知道如何解决这个问题,这真的很奇怪。
在调试ExpanderRT
控件的整个代码后,我能够解决问题! 它是由原始Expander控件的一个错误导致的,它被移植到WinRT
我发现, ExpanderControl.cs
类中_itemsCanvas
的高度是通过这个方法设置的:
private void OnPresenterSizeChanged(object sender, SizeChangedEventArgs e) { if (null != _itemsCanvas && null != _presenter && IsExpanded) { _itemsCanvas.Height = _presenter.DesiredSize.Height; } }
这会导致仅在ExpanderView
当前展开时应用项容器的大小。 当ExpanderView
当前未展开时,我只是添加了以下条件来将项容器的高度设置为0。
else if (null != _itemsCanvas && null != _presenter && !IsExpanded) { _itemsCanvas.Height = 0; }
我添加了对控件的各种改进以利用新的UWPfunction,因此如果有人对UWP兼容版本感兴趣,请随时与我联系。
UPDATE
我为UWP更新了ExpanderControl创建了一个GitHub Repo