トップ回答者
DataGridの幅と高さをブラウザのサイズに合わせてスクロールバーを出す方法

質問
-
こんにちは。アべです。
DataGridの幅と高さをブラウザのサイズに合わせてスクロールバーを出す方法はあるのでしょうか?
当方、ブラウザの大きさに合わせる画面設計をして開発を進めています。
画面は、
・ヘッダ
・ボディ
・フッタ
があり、ヘッダとフッタの高さは固定です。
また、画面全体をブラウザに合わせるべく、UserControlとLayoutRootの
幅、高さを自動(Auto)にしております。
その設定で、ボディに非常に大きな行・列を持つデータグリッドを貼ると
スクロールは出ずに表示されます。データグリッドのプロパティ
・幅=自動、高さ=自動
・スクロールバーの表示=自動どうも
1)データグリッドは、幅と高さを指定しないと小さくならないので、
スクロールバーが出ないようです。
幅と高さを指定するとブラウザサイズに合わせた見た目にならないので使えない。2)データグリッドの幅と高さをUserControlやLayoutRootと
バインドしたが、親もサイズが自動(Auto)なので、データグリッドの
サイズが自動(Auto)になってしまう。などの問題があり、うまくいっておりません。
何か回避方法はあるのでしょうか?
ご確認を宜しくお願い致します。環境
・Windows XP / Siliverlight 3.0 / Expression Blend3以上
2009年12月5日 10:34
回答
-
回答を有難うございます。
何となく自己解決しました。
StackPanelを使うとそうなるらしいです。
nk9kさん、有難うございます。
まず、適応な小さなアプリを作ってみると動きます。
これを問題の出ているコードに近づけていったのですが、
StackPanelを入れたら変な動きになりました。
変とはスクロールバーが出ない。↓垂直スクロールバーが画面を小さくしても表示されないサンプルコードです。
今は、StackPanelを使わずに実現する方向で調整しています。<navigation:Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="SilverlightApplication1.PageStacPanel" Title="PageStacPanel Page" > <Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource SampleDataSource}}" > <Grid.RowDefinitions> <RowDefinition Height="80"/> <RowDefinition /> <RowDefinition Height="80"/> </Grid.RowDefinitions> <StackPanel Margin="2" Grid.Row="1" Orientation="Vertical" d:LayoutOverrides="Height"> <data:DataGrid Margin="0,0,0,0" AutoGenerateColumns="False" ItemsSource="{Binding Collection}" > <data:DataGrid.Columns> <data:DataGridTextColumn Header="Property1" Binding="{Binding Property1}"/> <data:DataGridCheckBoxColumn Header="Property2" Binding="{Binding Property2}"/> <data:DataGridTextColumn Header="Property3" Binding="{Binding Property3}"/> <data:DataGridTextColumn Header="Property4" Binding="{Binding Property4}"/> <data:DataGridTextColumn Header="Property5" Binding="{Binding Property5}"/> </data:DataGrid.Columns> </data:DataGrid> </StackPanel> </Grid> </navigation:Page>
- 回答としてマーク 山本春海 2010年5月14日 1:27
2009年12月9日 10:51
すべての返信
-
回答を有難うございます。
何となく自己解決しました。
StackPanelを使うとそうなるらしいです。
nk9kさん、有難うございます。
まず、適応な小さなアプリを作ってみると動きます。
これを問題の出ているコードに近づけていったのですが、
StackPanelを入れたら変な動きになりました。
変とはスクロールバーが出ない。↓垂直スクロールバーが画面を小さくしても表示されないサンプルコードです。
今は、StackPanelを使わずに実現する方向で調整しています。<navigation:Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" x:Class="SilverlightApplication1.PageStacPanel" Title="PageStacPanel Page" > <Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource SampleDataSource}}" > <Grid.RowDefinitions> <RowDefinition Height="80"/> <RowDefinition /> <RowDefinition Height="80"/> </Grid.RowDefinitions> <StackPanel Margin="2" Grid.Row="1" Orientation="Vertical" d:LayoutOverrides="Height"> <data:DataGrid Margin="0,0,0,0" AutoGenerateColumns="False" ItemsSource="{Binding Collection}" > <data:DataGrid.Columns> <data:DataGridTextColumn Header="Property1" Binding="{Binding Property1}"/> <data:DataGridCheckBoxColumn Header="Property2" Binding="{Binding Property2}"/> <data:DataGridTextColumn Header="Property3" Binding="{Binding Property3}"/> <data:DataGridTextColumn Header="Property4" Binding="{Binding Property4}"/> <data:DataGridTextColumn Header="Property5" Binding="{Binding Property5}"/> </data:DataGrid.Columns> </data:DataGrid> </StackPanel> </Grid> </navigation:Page>
- 回答としてマーク 山本春海 2010年5月14日 1:27
2009年12月9日 10:51