使用* WPF XAML相对于实际行高的项高度

时间:2014-11-12 11:51:15

标签: c# wpf xaml

我有以下XAML

<Window x:Class="WpfApplication3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:wpfApplication3="clr-namespace:WpfApplication3"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="60*"/>
            <RowDefinition Height="147*"/>
            <RowDefinition Height="112*"/>
        </Grid.RowDefinitions>
        <TabControl Grid.Row="1">
            <TabItem Header="Match Bets" >

                <StackPanel Margin="15" Orientation="Vertical" Height="Auto" Width="Auto" >
                    <Label Content="My Header"/>
                    <DataGrid 
                        Height="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="Auto">
                        <DataGrid.Columns>
                            <DataGridTextColumn  IsReadOnly="False" Binding="{Binding Subject}" Header="Original A"  Width="Auto" />
                            <DataGridTextColumn  IsReadOnly="False" Binding="{Binding PriceOriginalSelectionB}" Header="Original B"  Width="Auto" />
                            <DataGridTextColumn  IsReadOnly="False" Binding="{Binding PriceDerivedSelectionA}" Header="Derived A"  Width="Auto" />
                            <DataGridTextColumn  IsReadOnly="False" Binding="{Binding PriceDerivedSelectionB}" Header="Derived B"  Width="Auto" />
                        </DataGrid.Columns>

                        <wpfApplication3:Dummy Subject="Subject 1" Body="Body 1" />
                        <wpfApplication3:Dummy Subject="Subject 2" Body="Body 2" />
                        <wpfApplication3:Dummy Subject="Subject 2" Body="Body 2" />
                        <wpfApplication3:Dummy Subject="Subject 2" Body="Body 2" />
                        <wpfApplication3:Dummy Subject="Subject 2" Body="Body 2" />
                        <wpfApplication3:Dummy Subject="Subject 2" Body="Body 2" />

                    </DataGrid>

                </StackPanel>

            </TabItem>

        </TabControl>
        <DataGrid HorizontalAlignment="Stretch" Margin="5" Grid.Row="2" VerticalAlignment="Stretch" Height="Auto" Width="Auto" />

    </Grid>
</Window>

我希望我的datagrid(在stackpanel中)只会增长到它所在行的大小以下,但堆栈面板似乎允许它增长到它想要的任何大小。无论如何没有明确设置堆栈面板的高度,我可以做到这一点。或者我可以将stackpanel的高度设置为略小于行的星号*高度。

如果我删除了datagrid里面的stackpanel,这个工作正常,但是我需要stackpanel在datagrid的上方和下方添加其他内容。

2 个答案:

答案 0 :(得分:2)

不要设置DataGrid的Height,而是将VerticalAlign设置为Stretch,并使用5px的上/下边距。

答案 1 :(得分:1)

使用网格。 StackPanel表现不同,网格应该允许&#34;增长&#34;如你所愿。