WPF アプリケーションの標準の .net 4 Datagrid ユーザー コントロールで問題が発生していますが、この問題は、アプリケーションがインストールされ、Windows 7 OS で実行されている場合にのみ発生します。MVVM 設計、ObservableCollection、およびデータバインディングを使用して、データグリッド コントロールを実装しました。XAML コードは非常に標準的で、次のようになります。
スタイル:
<Style x:Key="SummaryGrid" TargetType="{x:Type DataGrid}">
<Setter Property="HorizontalAlignment" Value="Stretch"></Setter>
<Setter Property="Margin" Value="0,0,0,10"></Setter>
<Setter Property="GridLinesVisibility" Value="Horizontal"></Setter>
<Setter Property="BorderBrush" Value="#d4d7db"></Setter>
<Setter Property="HorizontalGridLinesBrush" Value="#d4d7db"></Setter>
<Setter Property="BorderThickness" Value="1"></Setter>
<Setter Property="RowDetailsVisibilityMode" Value="Visible"></Setter>
<Setter Property="Foreground" Value="#363636"></Setter>
<Setter Property="CanUserSortColumns" Value="False"></Setter>
<Setter Property="RowStyleSelector">
<Setter.Value>
<help:RowStyleSelector DefaultStyle="{StaticResource SummaryGridRow}" NewItemStyle="{StaticResource SummaryGridNewRow}"></help:RowStyleSelector>
</Setter.Value>
</Setter>
</Style>
ユーザーコントロール:
<UserControl x:Class="BRAPClientApp.Views.VisitList"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<UserControl.Resources>
</UserControl.Resources>
<StackPanel Margin="20,0,0,0" >
<TextBlock x:Name="header" x:Uid="header" HorizontalAlignment="Left" Style="{StaticResource h2}" TextWrapping="Wrap" >Scheduled Visits</TextBlock>
<DataGrid x:Name="fp" ItemsSource="{Binding Path=VisitMenuViewModel.VisitButtons}"
AutoGenerateColumns="False"
CanUserAddRows="False"
Style="{StaticResource SummaryGrid}"
CellStyle="{StaticResource SummaryGridCell}"
ColumnHeaderStyle="{StaticResource SummaryGridHeader}"
RowHeaderStyle="{StaticResource DataGridRowHeaderStyle1}"
CanUserDeleteRows="False">
<DataGrid.Columns>
<DataGridTextColumn EditingElementStyle="{StaticResource CellEditStyle}"
ElementStyle="{StaticResource CellStyle}"
Header="Client" Width="*" IsReadOnly="True"
Binding="{Binding Path=Visit.OrgName}"></DataGridTextColumn>
<DataGridTextColumn EditingElementStyle="{StaticResource CellEditStyle}"
ElementStyle="{StaticResource CellStyle}"
Header="Status" Width="*" IsReadOnly="True"
Binding="{Binding Path=Visit.visitStatus}"></DataGridTextColumn>
<DataGridTextColumn EditingElementStyle="{StaticResource CellEditStyle}"
ElementStyle="{StaticResource CellStyle}"
Header="Start Date" Width="*" IsReadOnly="True"
Binding="{Binding Path=Visit.startdate, StringFormat={}{0:dd/MM/yyyy}}"></DataGridTextColumn>
<DataGridTemplateColumn Header="Actions">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock >
<Hyperlink Command="{Binding Command}" CommandParameter="{Binding Path=Visit.VisitId}" >Start</Hyperlink>
<!--<Button Content="Start" Command="{Binding Command}" CommandParameter="{Binding Path=Visit.VisitId}" />-->
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</StackPanel>
問題は、Load イベントの後に Datagrid 自体のサイズが変更されないように見え、下部にかなりの灰色のスペースが表示されることです。個人的には Datagrid オブジェクトの報告されていないバグだと思いますが、皆さんの考えを知りたいです。以下のスクリーンショットをご覧ください。