我在我的应用程序中使用WPFExpanderViewExpanderRT)的端口来显示带有项目的可扩展标题。当应用程序第一次启动并且初始化UWP时,此操作可以正常工作。但是,如果我导航到一个新页面,然后返回到MainPageMainPage看起来像展开的,但它并没有显示项目。它应该看起来与第一次初始化ExpanderView时一样。我捕捉到一个MainPage来显示行为。
这是GIFXAMLUserControl

<ListView x:Name="CategoriesListView" ScrollViewer.VerticalScrollBarVisibility="Hidden">
<ListView.ItemContainerStyle>
    <Style TargetType="ListViewItem">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListViewItem">
                    <ListViewItemPresenter ContentMargin="0" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ListView.ItemContainerStyle>
<ListView.ItemsPanel>
    <ItemsPanelTemplate>
        <StackPanel/>
    </ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
    <DataTemplate x:DataType="models:Category">
        <expander:ExpanderControl
            x:Name="expander_Main"
            ItemsSource="{x:Bind childItems}"
            Expanded="Expanded" />
    </DataTemplate>
</ListView.ItemTemplate>

这是我用来导航的MainPage
    private void OnSettingsButtonChecked(object sender, RoutedEventArgs e)
    {
        ShellSplitView.IsPaneOpen = false;
        ViewModel.NavigationService.Navigate(typeof(SettingsPage));
    }

如果你们中有人知道为什么EventHandler有这么奇怪的行为,请给我一个提示-如果需要的话,我可以提供更多的代码。
c# - 页面导航后扩展ExpanderView-LMLPHP
[更新]
我注意到这种行为只有在我在移动设备(智能手机或移动Windows10模拟器)上运行应用程序时才会发生。如果我在本地计算机上执行应用程序,ExpanderView可以正常工作。当我使用后退按钮导航回ExpanderView时,它按预期工作-我不知道如何修复,这真的很奇怪。
c# - 页面导航后扩展ExpanderView-LMLPHP

最佳答案

在调试了ExpanderRT控件的整个代码之后,我能够解决这个问题!它是由原来的扩展程序控件的一个错误引起的,该错误被移植到WinRT
我发现,类中_itemsCanvas的高度是通过以下方法设置的:

private void OnPresenterSizeChanged(object sender, SizeChangedEventArgs e)
{
    if (null != _itemsCanvas && null != _presenter && IsExpanded)
    {
        _itemsCanvas.Height = _presenter.DesiredSize.Height;
    }
}

这导致仅当当前展开ExpanderControl.cs时才应用项容器的大小。我只是添加了以下条件,以便在当前未展开ExpanderView时将项目容器的高度设置为0。
else if (null != _itemsCanvas && null != _presenter && !IsExpanded)
{
   _itemsCanvas.Height = 0;
}

我对控件进行了各种改进,以利用新的uwp功能,因此如果有人对uwp兼容版本感兴趣,请随时与我联系。
更新
我为uwp的更新的expander控件创建了一个GitHub Repo

10-04 14:54