■76128 / inTopicNo.1) |
WPF DataGridがWindow枠から外にはみ出す |
□投稿者/ sora (1回)-(2015/06/02(Tue) 20:07:23)
|
分類:[.NET 全般]
■開発環境:VisualStudio2010, .NetFramework4, C#
こんにちは。
WPFを使い、アプリケーション画面を作成しています。
Gridを使って、コンテンツを上部と下部に分けて、
それぞれがWindowの高さ全体に広がるようにしたいと考えています。
コンテンツの下部には、DataGridを配置しています。
想定としては、DataGridがフレームの下部いっぱいに広がり、
行数が多いときには、DataGridにスクロールバーが表示されるということを考えています。
また、画面のロード時に、BindしたデータがDataGridに追加されるように設定しています。
しかし、実際に、アプリケーションを起動すると、
DataGridの行数が多いときには、DataGridが、Window枠からはみ出して表示されてしまいます。
Windowを全画面表示にすると、その段階で、意図したレイアウトになります。
データ追加後に、DataGridをリフレッシュするなど、いろいろ試しましたが、
やはり枠からはみ出します。
ソースは下記の通りです。
お手数ですが、解決策やヒントをご指摘願えないでしょうか。
-----
■MainWindow.xaml
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="640" Width="1000"
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
xmlns:local="clr-namespace:WpfApplication1">
<Window.Resources>
<local:LogTableData x:Key="logTableData" />
<CollectionViewSource x:Key="logViewSource" Source="{Binding Path=LogList, Source={StaticResource logTableData}}" />
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" MinHeight="400" />
<RowDefinition Height="*" MinHeight="400" />
</Grid.RowDefinitions>
<!-- 上部コンテンツ -->
<Label Grid.Column="0" Grid.Row="0" />
<!-- 下部コンテンツ(テーブル) -->
<DataGrid Name="myTable" Grid.Column="0" Grid.Row="1" DataContext="{StaticResource logViewSource}" AutoGenerateColumns="False" ItemsSource="{Binding}" >
<DataGrid.Columns>
<DataGridTextColumn x:Name="clmLogDateTime" Binding="{Binding Path=LogDateTimeText}" Header="日時" Width="140" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
■MainWindow.xaml.cs
namespace WpfApplication1
{
public class LogTableData
{
public ObservableCollection<LogInfo> LogList { get; set; }
public LogTableData()
{
LogList = new ObservableCollection<LogInfo>();
}
}
public class LogInfo
{
public DateTime LogDateTime { get; set; }
}
public partial class MainWindow : Window
{
private LogTableData _logTableData;
public MainWindow()
{
InitializeComponent();
Object res1 = this.Resources["logTableData"];
_logTableData = (LogTableData)res1;
if (_logTableData == null) _logTableData = new LogTableData();
SetLogTableRow();
}
public void SetLogTableRow()
{
_logTableData.LogList.Clear();
for (int i = 0; i < 50; i++)
{
LogInfo logInfo = new LogInfo();
logInfo.LogDateTime = DateTime.Now;
_logTableData.LogList.Add(logInfo);
}
}
}
}
|
|