我编写的应用程序在Windows 10版本10586和10240中正常工作,但在构建14393(周年纪念更新)中没有。
在周年纪念更新版本中运行时,问题是我的命令栏的PrimaryCommands区域中的按钮没有出现。如果显示SecondaryCommands区域(通过选择命令栏右端的“ ... ”菜单),除了辅助命令外,还会神奇地显示PrimaryCommands中的按钮。然后,主要命令按钮在整个会话的剩余时间内保持可见状态。
但是这个问题只发生在构建14393中。在早期的Windows构建中,CommandBar按钮会立即显示,正如它们应该的那样。您不必显示辅助命令即可显示主命令。
请注意,我使用VisualStateManager(使用GoToState
方法)为我的按钮设置不同的可见性状态。按钮会根据当前上下文显示或消失。
CommandBar组件位于主应用页面中。在同一页面中,我还有一个框架,我在其中加载各种页面,因为用户选择了各种导航选项。
当用户导航到另一个页面(来自Frame的Navigated事件)时,我调用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中,在用户显示更多(...)菜单之前,PrimaryCommands不可见。我想知道在构建14393中可能会有什么不同导致这种情况发生。
答案 0 :(得分:1)
我自己遇到了问题。我认为在新的IsDynamicOverflowEnabled
属性中存在一个问题,它有时会导致按钮无意中溢出到辅助命令下拉列表中。对于C ++,修复是禁用这样的新功能:
if (Windows::Foundation::Metadata::ApiInformation::IsPropertyPresent(L"Windows.UI.Xaml.Controls.CommandBar", L"IsDynamicOverflowEnabled"))
{
this->CommandBar->IsDynamicOverflowEnabled = false;
}
CommandBar
控件似乎有一个错误,用户代码折叠按钮完全打破了动态溢出逻辑。