2017-08-03 25 views
0

不能得到爲什麼我的ScrollViewer不工作...我下面的XAML是:的ScrollViewer不起作用

<Page 
    x:Class="Colibry.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="using:Colibry" 
    xmlns:controls="using:Colibry.Controls" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d"> 

    <Grid x:Name="MainGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
     <VisualStateManager.VisualStateGroups> 
      <VisualStateGroup> 
       <VisualState x:Name="WideState"> 
        <VisualState.StateTriggers> 
         <AdaptiveTrigger MinWindowWidth="720"/> 
        </VisualState.StateTriggers> 
        <VisualState.Setters> 
         <Setter Target="MainGrid.Margin" Value="24"/> 
         <Setter Target="MainGrid.RowDefinitions[1].Height" Value="auto"/> 
         <Setter Target="MainGrid.ColumnDefinitions[1].Width" Value="*"/> 
         <Setter Target="firstLayout.Margin" Value="0 0 6 0"/> 
         <Setter Target="secondLayout.Margin" Value="6 0 0 0"/> 
         <Setter Target="secondLayout.(Grid.Column)" Value="1"/> 
         <Setter Target="secondLayout.(Grid.Row)" Value="0"/> 
        </VisualState.Setters> 
       </VisualState> 
       <VisualState x:Name="NarrowState"> 
        <VisualState.StateTriggers> 
         <AdaptiveTrigger MinWindowWidth="0" /> 
        </VisualState.StateTriggers> 
        <VisualState.Setters> 
         <Setter Target="MainGrid.Margin" Value="12"/> 
         <Setter Target="firstLayout.Margin" Value="0 0 0 6"/> 
         <Setter Target="secondLayout.Margin" Value="0 6 0 0"/> 
         <Setter Target="MainGrid.RowDefinitions[1].Height" Value="*"/> 
         <Setter Target="MainGrid.ColumnDefinitions[1].Width" Value="auto"/> 
         <Setter Target="secondLayout.(Grid.Column)" Value="0"/> 
         <Setter Target="secondLayout.(Grid.Row)" Value="1"/> 
        </VisualState.Setters> 
       </VisualState> 
      </VisualStateGroup> 
     </VisualStateManager.VisualStateGroups> 

     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
      <ColumnDefinition/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <Grid.Resources > 
      <Style TargetType="Border" > 
       <Setter Property="Padding" Value="0,25,0,0" /> 
      </Style> 
     </Grid.Resources> 
     <!-- Controls --> 
     <controls:ColorPicker x:Name="firstLayout" Grid.Column="0" Grid.Row="0" /> 
     <Grid x:Name="secondLayout" Grid.Column="1" Grid.Row="0"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="Auto"/> 
       <RowDefinition Height="Auto"/> 
      </Grid.RowDefinitions> 
      <ComboBox x:Name="comboColorModel" Header="Color model" ItemsSource="{x:Bind colorModels}" SelectedIndex="{x:Bind SelectedColorModelIndex}" SelectionChanged="ComboColorModel_SelectionChanged" /> 
      <ScrollViewer Grid.Column="0" Grid.Row="1" VerticalAlignment="Stretch" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto"> 
       <Border x:Name="container" Height="900" /> 
      </ScrollViewer> 
     </Grid> 
    </Grid> 
</Page> 

我設置固定高度BorderScrollViewer只是忽略Border大小。我做錯了什麼?

回答

1

您已經定義了的ScrollViewer沒有指定身高並投入網格行與自動高度 - 這是不行的。 ScrollViewer必須知道它的高度(或能夠計算出它)。一種可能的方法是從行中刪除auto,並讓scrollviewer顯式拉伸或設置其高度。

<Grid.RowDefinitions> 
    <RowDefinition/> 
    <RowDefinition/> 
</Grid.RowDefinitions> 
<ScrollViewer Grid.Column="0" Grid.Row="1" VerticalAlignment="Stretch" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto"> 
+0

更換你secondlayout感謝ü非常的解釋!我會嘗試 –

+0

此解決方案不起作用=( –

+0

@Шах奇怪,因爲我試過它沒有問題,你能給一個repro嗎? – Romasz

0

與此

<Grid x:Name="secondLayout" Grid.Column="1" Grid.Row="0"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition /> 
     </Grid.RowDefinitions> 
     <ComboBox x:Name="comboColorModel" Header="Color model" ItemsSource="{x:Bind colorModels}" SelectedIndex="{x:Bind SelectedColorModelIndex}" SelectionChanged="ComboColorModel_SelectionChanged" /> 
     <ScrollViewer Grid.Column="0" Grid.Row="1" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto"> 
      <Border x:Name="container" /> 
     </ScrollViewer> 
    </Grid>