2016-08-28 8 views
0

私は自分のuwpプロジェクトでレスポンシブルなdesingをやっています。XAML VisualStateManagerとRelativePanel

私の考えは、StackPanel_CommandBarの下にある私のStackPanel_ListViewsをPC上で取得することです。 モバイルでは、StackPanel_ListViewsの下にある自分のStackPanel_CommandBarを取得します。

両方のStackPanelはピボットの内側にあります。

これは私のコードです:

<VisualStateManager.VisualStateGroups> 
    <VisualStateGroup x:Name="VisualStateGroup"> 
     <VisualState x:Name="Mobile"> 
      <VisualState.StateTriggers> 
       <AdaptiveTrigger MinWindowWidth="0"/> 
      </VisualState.StateTriggers> 
      <VisualState.Setters> 
       <Setter Target="StackPanel_CommandBar.(RelativePanel.Below)" Value="StackPanel_ListViews"/> 
      </VisualState.Setters> 
     </VisualState> 
     <VisualState x:Name="Pc"> 
      <VisualState.StateTriggers> 
       <AdaptiveTrigger MinWindowWidth="800"/> 
      </VisualState.StateTriggers> 
      <VisualState.Setters> 
       <Setter Target="StackPanel_ListViews.(RelativePanel.Below)" Value="StackPanel_CommandBar"/> 

      </VisualState.Setters> 
     </VisualState> 
    </VisualStateGroup> 
</VisualStateManager.VisualStateGroups> 

<StackPanel> 
    <controls:PageHeader x:Name="pageHeader" RelativePanel.AlignLeftWithPanel="True" 
        RelativePanel.AlignRightWithPanel="True" 
        RelativePanel.AlignTopWithPanel="True" Text="Tittle"> 

    </controls:PageHeader> 

    <Pivot x:Name="MainPivot"> 
     <PivotItem> 
      <RelativePanel> 
       <StackPanel Orientation="Vertical" x:Name="StackPanel_CommandBar" RelativePanel.AlignLeftWithPanel="True" RelativePanel.AlignRightWithPanel="True"> 
       </StackPanel> 
       <StackPanel Orientation="Vertical" x:Name="StackPanel_ListViews" RelativePanel.Below="StackPanel_CommandBar" RelativePanel.AlignLeftWithPanel="True" RelativePanel.AlignRightWithPanel="True"> 
       </StackPanel> 
      </RelativePanel> 
     </PivotItem> 
    </Pivot> 

</StackPanel> 

StackPanel_ListViewsはStackPanelのは2つのリストビューが含まれています。 StackPanel_CommandBarは、スタックパネルにCommandBarが含まれています。

このコードを使用すると、私は結果がなく、上記と以下を使用して循環エラーが発生しています。

私が間違ってやっていることは、私が上記のようにうまくいくかどうかです。

何か助けていただければ幸いです。

答えて

1

「StackPanel_ListViews」の2番目のStackPanelでご迷惑をおかけしてしまったと思います。

あなたが最初にRelativePanel.Below="StackPanel_CommandBar"を設定しましたが、レイアウトがレンダリングされたときに、一番最初に、ウィンドウの幅は、これはあなたの<VisualState x:Name="Mobile">Setterで競合が発生し、例外がスローされます、0です。このRelativePanel.Below="StackPanel_CommandBar"コードを削除するだけで問題なく動作します。

enter image description here

関連する問題