2016-09-23 3 views
1

Windows 10のビルド10586および10240では正常に動作するアプリケーションを作成しましたが、ビルド14393ではできません(Anniversary更新)。Anniversary Updateで実行中のアプリケーションでMore(...)メニューを選択するまでCommandBar PrimaryCommandsボタンが表示されない

Anniversary Updateビルドで実行しているときは、コマンドバーのPrimaryCommands領域のボタンが表示されないという問題があります。 SecondaryCommands領域を表示する場合(コマンドバーの右端にある「...」メニューを選択)、セカンダリコマンドに加えてPrimaryCommandsのボタンが魔法のように表示されます。その後、プライマリコマンドボタンはセッションの残りの部分で目に見えるようになります。

ただし、この問題はビルド14393でのみ発生します。以前のWindowsビルドでは、CommandBarボタンがすぐに表示されます。プライマリコマンドを表示するためにセカンダリコマンドを表示する必要はありません。

私はVisualStateManager(GoToStateメソッドを使用しています)を使用して、自分のボタンのさまざまな可視状態を設定しています。現在のコンテキストに応じて、ボタンが表示されたり消えたりします。

CommandBarコンポーネントは、メインのアプリケーションページにあります。同じページには、ユーザーがさまざまなナビゲーションオプションを選択したときに、さまざまなページを読み込むフレームもあります。ユーザーが選択したページに基づいて、コマンドボタンの可視状態を設定するには、(フレームのナビゲートイベントから)別のページに移動するとき

私はGoToStateメソッドを呼び出します。ここでは

// Change the visual state of command buttons based on the page selection 
string pageType = ContentFrame.CurrentSourcePageType.Name; 
var stateFound = VisualStateManager.GoToState(this, pageType, false); 

は私の視覚的な状態は、私が言ったように

<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> 

、コードがWindowsで正常に動作する前14393.に構築します。しかし、ユーザーが(...)詳細が表示されるまでビルド14393で、PrimaryCommandsは表示されません。ページのXAMLマークアップで定義されていますメニュー。私は、これが起こるようにビルド14393で何が異なるかもしれないのだろうかと思っています。

答えて

1

私は自分自身に問題がありました。私は、新しいIsDynamicOverflowEnabledプロパティに問題があると思うので、ときどきボタンが誤ってセカンダリコマンドドロップダウンにオーバーフローすることがあります。修正プログラムがそのようなその新しい機能を無効にすることだったC++の場合:

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

CommandBarコントロールには、ボタンを崩壊ユーザーコードが完全に動的オーバーフローロジックを壊すバグを持っているようです。

+0

(Loadedイベントで)C#同等のコードを使用してこれを試しましたが、まだ問題がありました。私のPrimaryCommandsエリアが完全に空であるシナリオがあるので、私の状況は多少異なるかもしれないと思っていました。そのようにすることで、常に少なくとも1つのPrimaryCommandが表示されます。理想的ではありませんが、回避策があります。ありがとう! –

+0

私は同じ種類の問題を抱えています。ビジュアル状態が変更されたときに、C#コードのコマンドバーを更新します。 10240と10586で完全に動作します。しかし、14393で実行すると、プライマリコマンド(クリアと追加)アイコンを更新するとアイコンが消え、ラベルのみが表示されます。オーバーフローボタンも非表示になります。 –

+0

それは別の問題のように聞こえる、Nuwannnz。プロジェクトファイルでWindowsTargetPlatformVersion(C++)またはTargetPlatformVersion(C#)を10.0.14393.0(プロジェクトプロパティで設定した場合)に設定すると、私が見た問題が発生します。オーバーフローボタンは隠されませんが、 'PrimaryCommands'エリアのアイコンは' SecondaryCommands'エリア(オーバーフロー)に移動します。私の場合、これは 'VisualStates'の' CommandBar'の可視性を変更することに関連しているようです。問題を再現させるプロジェクトやコードスニペットを共有できますか?私はコントロールチームと共有することができます。 –

関連する問題