2017-11-16 10 views
-1

リストビューコントロールのオーバーフローを防ぐには?WPFリストビューのオーバーフロー

項目が追加されます:

をリストビューには赤いマークで停止する必要があります。

望ましい結果: enter image description here

MainWindow.xamlは、左側のメニューと右側のviews.accounts.xamlとハンバーガーメニューです。

Views.Accounts.xaml:いくつかの理由がありますこの種の問題のために通常

<UserControl> 

<Grid Background="White"> 
    <!--Define 2 Rows--> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="48"/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 

<!--Header--> 
<Border Grid.Row="0" Background="#FF444444"...> 
<Grid Grid.Row="1" Margin="10"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition/> 
      <ColumnDefinition Width="250"/> 
     </Grid.ColumnDefinitions> 

<!--Options--> 
<StackPanel Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"...> 

<!--Content area--> 
<Grid Grid.Row="1" Grid.Column="0" Margin="0 20 0 0"> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition/> 
        <RowDefinition Height="Auto"/> 
       </Grid.RowDefinitions> 
       <ScrollViewer Grid.Row="0"> 
      <ListView Style="{StaticResource VirtualisedMetroListView}" 
         MinHeight="250" Name="accountsListView"> 
       <ListView.View> 
        <GridView> 
         <GridViewColumn Header="Username" DisplayMemberBinding="{Binding username}"/> 
         <GridViewColumn Header="Password" DisplayMemberBinding="{Binding password}"/> 
         <GridViewColumn Header="Email" DisplayMemberBinding="{Binding email}"/> 
         <GridViewColumn Header="Verified" DisplayMemberBinding="{Binding verified}"/> 
        </GridView> 
       </ListView.View> 
      </ListView> 
       </ScrollViewer> 
       <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right"> 
       <Button Content="Clear" Width="74" Click="clear_Click"/> 
       <Button Margin="10 0 0 0" Content="Export" Width="74"/> 
      </StackPanel> 
      </Grid> 
     </Grid> 

<!--Settings--> 
<Grid Grid.Row="1" Grid.Column="1" Margin="10 10 0 10"> 

</Grid> 
</Grid> 
</UserControl> 
+0

あなたは良い[mcve]を提供していないので、実際の回答を書くことは現実的ではありません。しかし、あなたが共有してきた小さな情報に基づいて、あなたの問題は、 'StackPanel'(子どもたちに望みどおりの部屋を与えてくれる要素)の中の' ListView'を入れ子にしているようです。クリップはサイズを超えています)、 'ListView'はスクロールバーを表示するはずです。なぜここでStackPanelを使用しているのかは不明です。あなたのグリッドでは、2行目が '高さ=自動 'である方が良いでしょう。 –

+0

@PeterDunihoスタックパネルの代わりに2行のグリッドを使ってみました。それはまだ働かなかった。 – Raven

+0

@PeterDunihoより多くのコードで私の質問が更新されました。 – Raven

答えて

1

  • のListViewはStackPanelの内側
  • ListViewコントロールでは、自動高さグリッド行の内部にあります。
  • ListViewはScrollViewerの内部にあります。

これを解決する最も簡単な方法は、StackPanelコントロールとScrollViewerコントロールを削除することです。 ListViewにはScrollViewerが組み込まれているため、手動で定義する必要はありません。

また、GridのRowDefinitionがHeight = "Auto"に設定されていないことを確認してください。例えばので

<!--Content area--> 
<Grid Grid.Row="1" Grid.Column="0" Margin="0 20 0 0"> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
    <ListView Style="{StaticResource VirtualisedMetroListView}" MinHeight="250" Name="accountsListView"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="Username" DisplayMemberBinding="{Binding username}"/> 
       <GridViewColumn Header="Password" DisplayMemberBinding="{Binding password}"/> 
       <GridViewColumn Header="Email" DisplayMemberBinding="{Binding email}"/> 
       <GridViewColumn Header="Verified" DisplayMemberBinding="{Binding verified}"/> 
      </GridView> 
     </ListView.View> 
    </ListView> 
    <StackPanel Grid.Row="1" Orientation="Horizontal" HorizontalAlignment="Right"> 
     <Button Content="Clear" Width="74" Click="clear_Click"/> 
     <Button Margin="10 0 0 0" Content="Export" Width="74"/> 
    </StackPanel> 
</Grid> 

またVirtualisedMetroListViewのスタイルは、ScrollViewerのに影響を与える可能性があるものが含まれていないことを確認してください。

+0

問題を解決しました。問題は親グリッドの行の高さがAutoに設定されていることでした。 – Raven

関連する問題