2017-06-30 26 views
1

我無法讓可視狀態管理器正確更改我的應用程序的主柵格的Horizo​​ntalAlignment/VerticleAlignment。UWP更改Grid.Horizo​​ntalAlignment使用VisualStateManager拉伸/保留

對於在手機上使用的屏幕尺寸,我希望Horizo​​ntalAlignment/VerticleAlignment伸展,將高度/寬度設置爲自動。

對於桌面,它應該是左/頂高/寬設置爲特定大小。無論出於何種原因,當我試圖與定位混亂它的行爲古怪,不會做我想做的

這裏是什麼,我都試過一個例子:

<VisualStateManager.VisualStateGroups> 
     <VisualStateGroup> 
      <VisualState x:Name="PhoneView"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="0"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <Setter Target="Grid.HorizontalAlignment" Value="Stretch"/> 
        <Setter Target="Grid.VerticleAlignment" Value="Stretch"/> 
        <Setter Target="Grid.Height" Value="Auto"/> 
        <Setter Target="Grid.Width" Value="Auto"/> 
       </VisualState.Setters> 
      </VisualState> 

      <VisualState x:Name="DesktopSmall"> 
       <VisualState.StateTriggers> 
        <AdaptiveTrigger MinWindowWidth="1920"/> 
       </VisualState.StateTriggers> 
       <VisualState.Setters> 
        <Setter Target="Grid.HorizontalAlignment" Value="Left"/> 
        <Setter Target="Grid.VerticleAlignment" Value="Top"/> 
        <Setter Target="Grid.Height" Value="1280"/> 
        <Setter Target="Grid.Width" Value="1920"/> 
       </VisualState.Setters> 
      </VisualState> 
     </VisualStateGroup> 
    </VisualStateManager.VisualStateGroups> 

的另一個問題是,當我嘗試設置最大分辨率爲1920x1280,如果我手動設置網格的高度/寬度,則Windows任務欄(OS任務欄,而不是應用程序應用程序欄/命令欄)將切斷我的應用程序的一部分。我不想將對齊設置爲伸展,因爲我試圖限制視圖的實時伸展。

謝謝!讓我知道是否需要更多細節。

+0

'Grid'是你的'Grid'的名字嗎?如果是,則將其更改爲不同的名稱。如果不是,則使用「Grid」名稱而不是「Grid」。 –

+0

網格不是我的網格的名稱。我一直在使用「容器」,例如Container.Horizo​​ntalAlignment。 –

+0

我只在這個例子中使用了網格作爲佔位符,所以很明顯它是我正在使用的網格。 –

回答

0

應該這樣寫 -

<Setter Target="Container.(Grid.HorizontalAlignment)" Value="Left" /> 
<Setter Target="Container.(Grid.VerticalAlignment)" Value="Top" /> 

我有,而無需編寫一行代碼創建可視狀態制定者一些提示here

+0

我會試試,謝謝。我現在記得,嵌套有時真的很奇怪。你有什麼想法爲什麼視覺狀態管理器放置在Pivot DataTemplate中時視覺狀態不工作?我已經完成了與listview沒有任何問題,但它在數據透視中表現時髦。 –

+0

您需要將「數據模板」中的內容封裝在「UserControl」中。請參閱我的答案[這裏](https://stackoverflow.com/questions/32088500/adaptivetrigger-and-datatemplate)。 –

+0

好的,所以我按照你的建議嘗試了,最初它拋出了一個異常。我試過你的第二種方法,它似乎工作。它自動寫入的代碼是:'''''' –

相關問題