Uwp 在周年更新中运行的应用程序在您选择更多(…)菜单之前不会显示CommandBar PrimaryCommands按钮

Uwp 在周年更新中运行的应用程序在您选择更多(…)菜单之前不会显示CommandBar PrimaryCommands按钮,uwp,uwp-xaml,Uwp,Uwp Xaml,我已经编写了一个应用程序,可以在Windows10版本10586和10240中正常工作,但不能在版本14393周年更新中正常工作 在周年更新版本中运行时,问题是我的命令栏的PrimaryCommands区域中的按钮不会出现。如果通过选择。。。在命令栏右端的菜单中,除辅助命令外,主命令中的按钮也会神奇地出现。然后,主命令按钮在会话的其余部分保持可见,这是它们应该看到的 但这个问题只发生在14393版本中。在早期的Windows版本中,命令栏按钮会立即显示,这是它们应该显示的。不必显示辅助命令即可显

我已经编写了一个应用程序,可以在Windows10版本10586和10240中正常工作,但不能在版本14393周年更新中正常工作

在周年更新版本中运行时,问题是我的命令栏的PrimaryCommands区域中的按钮不会出现。如果通过选择。。。在命令栏右端的菜单中,除辅助命令外,主命令中的按钮也会神奇地出现。然后,主命令按钮在会话的其余部分保持可见,这是它们应该看到的

但这个问题只发生在14393版本中。在早期的Windows版本中,命令栏按钮会立即显示,这是它们应该显示的。不必显示辅助命令即可显示主命令

请注意,我正在使用VisualStateManager和GoToState方法为按钮设置不同的可见性状态。按钮的显示或消失取决于当前上下文

CommandBar组件位于主应用程序页面中。在同一个页面中,我还有一个框架,当用户选择各种导航选项时,我在其中加载各种页面

当用户导航到与框架的导航事件不同的页面时,我调用GoToState方法,以基于所选页面设置CommandButton可见性状态:

// Change the visual state of command buttons based on the page selection
string pageType = ContentFrame.CurrentSourcePageType.Name;
var stateFound = VisualStateManager.GoToState(this, pageType, false);
以下是我在页面的XAML标记中定义的视觉状态:

<VisualStateManager.VisualStateGroups>
    <VisualStateGroup x:Name="SelectedPageStates">

        <VisualState x:Name="ProductsPage">
            <VisualState.Setters>
                <Setter Target="CommandDirections.Visibility" Value="Collapsed" />
                <Setter Target="CommandShare.Visibility" Value="Collapsed" />
                <Setter Target="CommandPrint.Visibility" Value="Collapsed" />
                <Setter Target="CommandSettings.Visibility" Value="Visible" />
            </VisualState.Setters>
        </VisualState>

        <VisualState x:Name="NewsPage">
            <VisualState.Setters>
                <Setter Target="CommandDirections.Visibility" Value="Collapsed" />
                <Setter Target="CommandShare.Visibility" Value="Collapsed" />
                <Setter Target="CommandPrint.Visibility" Value="Collapsed" />
                <Setter Target="CommandSettings.Visibility" Value="Visible" />
            </VisualState.Setters>
        </VisualState>

        <VisualState x:Name="MapsPage">
            <VisualState.Setters>
                <Setter Target="CommandDirections.Visibility" Value="Visible" />
                <Setter Target="CommandShare.Visibility" Value="Collapsed" />
                <Setter Target="CommandPrint.Visibility" Value="Collapsed" />
                <Setter Target="CommandSettings.Visibility" Value="Visible" />
            </VisualState.Setters>
        </VisualState>

        <VisualState x:Name="SalesPage">
            <VisualState.Setters>
                <Setter Target="CommandDirections.Visibility" Value="Collapsed" />
                <Setter Target="CommandShare.Visibility" Value="Collapsed" />
                <Setter Target="CommandPrint.Visibility" Value="Collapsed" />
                <Setter Target="CommandSettings.Visibility" Value="Visible" />
            </VisualState.Setters>
        </VisualState>

    </VisualStateGroup>
</VisualStateManager.VisualStateGroups>

正如我所说,代码在14393之前的Windows版本中运行良好。但是在构建14393中,只有在用户显示更多。。。菜单我想知道14393版本的不同之处是什么导致了这种情况的发生。

我自己也有过这样的问题。我认为新的IsDynamicOverflowEnabled属性中存在一个问题,它有时会导致按钮无意中溢出到辅助命令下拉列表中。对于C++,修复是禁用这样的新特性:

if (Windows::Foundation::Metadata::ApiInformation::IsPropertyPresent(L"Windows.UI.Xaml.Controls.CommandBar", L"IsDynamicOverflowEnabled"))
{
    this->CommandBar->IsDynamicOverflowEnabled = false;
}

CommandBar控件似乎有一个错误,用户代码折叠按钮完全破坏了动态溢出逻辑。

我在加载的事件中使用了C等效代码尝试了这一点,但仍然存在问题。不过,这让我想到,也许我的情况略有不同,因为在某些情况下,我的主要命令区是完全空的。通过使其始终至少显示一个PrimaryCommand,它就工作了。这并不理想,但它给了我一个解决办法。谢谢我也有同样的问题。。当视觉状态改变时,我用c代码更新命令栏。在10240和10586上运行良好。但在14393中运行时,当我更新主命令时,清除和添加图标消失,只显示标签。溢出按钮也被隐藏了。这听起来像是另一个问题,Nuwannnz。我看到的问题是,当在项目文件中将Windows StayGutpFrimeVistC++或TaelPialFrimeC C设置为100.1439 3.0或设置为Project属性时发生。溢出按钮不会隐藏,但图标会从PrimaryCommands区域移动到溢出的SecondaryCommands区域。在我的例子中,这似乎与更改VisualStates中命令栏的可见性有关。您能否共享一个使问题重现的项目或代码片段?我可以和控制小组分享。