0

WPFアプリケーションを開発しています。その中で私Gridは2つの行を持つを持っています。1つの行はで構成され、他の行にはの詳細ビューを表示するためのdatagrid行がいくつかあります。TextBlockselected itemDataGrid

<Grid>
 <Grid.RowDefinitions>
                        <RowDefinition Name="datagrid" Height="8*"></RowDefinition>
                        <RowDefinition Name="detailedview" Height="2*"></RowDefinition>
</Grid.RowDefinitions>

 <my:DataGrid 
                              Grid.Row="0"
                              x:Name="dataGrid1" 
                              Width="auto" 
                              HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
                              AutoGenerateColumns="False" CanUserAddRows="True" Margin="0,0,0,0">

<Grid Grid.Row="2">
<!- Detailed View->
</Grid>
</Grid>

問題は、DatagridのItemSourceをコードビハインドのIEnumerableコレクションに割り当てていることです。

グリッドの行サイズは、データグリッドの行数と正確に同じサイズである必要があります。

残りのスペースは詳細ビューで占有する必要があります。

2行以上追加した場合。データグリッドがある行の高さは、正確に2行に対応するように拡張する必要があり、詳細ビューのサイズは比較的小さくする必要があります。

8*と2*にコード化せずに、どうすればそれを達成できますか?

4

2 に答える 2

2

以下に示すように、データグリッド行の場合は[高さ]を[自動]に設定し、デアティレートされた行の場合は[高さ]を*に設定します。

        <RowDefinition Name="datagrid" Height="Auto"></RowDefinition>
        <RowDefinition Name="detailedview" Height="*"></RowDefinition>

データグリッドの行の高さは自動であるため、データグリッドのMinHeightプロパティをある値に設定して、表示するレコードがない場合でもデータグリッドがより多くの画面スペースを占めるようにします。以下では、MinHeightを80に設定しました。

<my:DataGrid 
MinHeight="80"
Grid.Row="0"
x:Name="dataGrid1" 
Width="auto" 
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
AutoGenerateColumns="False" CanUserAddRows="True" Margin="0,0,0,0">

また、データグリッドに行が増えたときに完全に縮小しないように、TextBlockに最小の高さを設定することもできます。

于 2013-01-24T10:30:56.013 に答える
0

DataGrid を ScrollViewer に入れることができます。次のマークアップを試す:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="40"/>
    </Grid.RowDefinitions>
        <ScrollViewer Grid.Row="0">
        <my:DataGrid ... />
    </ScrollViewer>

    <TextBlock   Height="40" Grid.Row="1" />

</Grid>
于 2013-01-24T11:51:22.763 に答える