2012-01-01 10 views
5

こんにちは、ありがとう!WPF/XAMLでグリッド行をスクロールするにはどうすればよいですか?

背景

私は1つの列と2列からなるグリッドレイアウトを持つWPFでシンプルで小さなアプリを作ってきました。一番上の行はヘッダーのシンプルなラベルを保持し、一番下の行は実行時にイメージサムネイルで動的に生成されるラッパーパネルを保持します。

<Window x:Class="HTNavigator.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" WindowState="Maximized" WindowStyle="None"> 
    <Window.Background> 
     <ImageBrush ImageSource="/HTNavigator;component/Images/HNBG.jpg" /> 
    </Window.Background> 
    <Grid > 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition /> 
     </Grid.ColumnDefinitions> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="75"/> 
      <RowDefinition Height="Auto"/> 
     </Grid.RowDefinitions> 
     <StackPanel Grid.Column="0" Grid.Row="0" Height="50" HorizontalAlignment="Left" Margin="30,10,0,0" Name="stackPanel1" VerticalAlignment="Top" Width="Auto" FlowDirection="LeftToRight" Orientation="Horizontal" > 
      <Label Content="Home Navigator v0.1" FontFamily="Tahoma" FontSize="18" FontWeight="Bold" Foreground="White" /> 
      <Button Content="Close" Height="50" Click="Button_Click"></Button> 
     </StackPanel> 
     <ScrollViewer Grid.Row="1" Name="MyScrollViewer" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto"> 
      <WrapPanel HorizontalAlignment="Center" Name="spContainer" VerticalAlignment="Top" ClipToBounds="True"></WrapPanel> 
     </ScrollViewer> 
    </Grid> 
</Window> 

問題

スクロールバーが表示されていないと、マウスホイールのスクロールでも動作しない:ここではXAMLです。私はもともとグリッドレイアウトを使用していない、と、この時点でXAMLのこの部分は期待通りに振る舞っ:(

<ScrollViewer Name="MyScrollViewer" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto"> 
      <WrapPanel HorizontalAlignment="Center" Name="spContainer" VerticalAlignment="Top"    ClipToBounds="True" ItemHeight="Auto"> </WrapPanel> 
</ScrollViewer> 

今すぐすべてが適切にレイアウトするが、私は私の垂直スクロール能力を得ることはありません、私はしないでください水平スクロールが必要です)。

どのような考えですか?

ありがとうございます!

マット

答えて

3

私はそれは大晦日です知っていますが、WrapPanelには何もないし、それがコンテンツに成長するので、あなたはAutoに行の高さを持っています。 WrapPanelに何かを置き、高さを*に設定します。また、StackPanelの内側にあるLabelからColumnを削除します。

「あなたの前にグリッドがありました」という例では、Grid.Rowがあります。明けましておめでとうございます。

+0

あなたはどういうことを言っていますか?新しい年のイブは、ほぼ14h前でした! SCNR :) – ChrisWue

+0

ハハ、申し訳ありませんが、すべての良い点。実際には、祝う前にこの質問を急いでしようとすると問題です! Wrappanelは実行時にコンテンツを取得します。私はあなたが言及した他の事を試みます。ありがとう! –

+0

もう一度ありがとうBalamBalam - あなたにも新年あけましておめでとう! –

関連する問題