Mo'Silverlight,Mo'麻烦......将一个DataGrid放在一个HerollredContentControl内的ScrollViewer中

时间:2012-06-21 17:54:44

标签: silverlight scrollviewer

我正在使用这个XAML:

    <Border x:Name="border1" Grid.Row="1">
        <toolkit:HeaderedContentControl Header="HeaderedContentControl" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" MaxWidth="{Binding ActualWidth, ElementName=border1}" MaxHeight="{Binding ActualHeight, ElementName=border1}">
            <Grid HorizontalAlignment="Left">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition/>
                    <RowDefinition Height="32"/>
                </Grid.RowDefinitions>
                <ScrollViewer Grid.ColumnSpan="2" Margin="0" MinHeight="75" d:LayoutOverrides="Width, Height" ScrollViewer.VerticalScrollBarVisibility="Auto" Padding="0" ScrollViewer.HorizontalScrollBarVisibility="Auto" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
                    <sdk:DataGrid ItemsSource="{Binding ItemSummaries}">
                    </sdk:DataGrid>
                </ScrollViewer>
                <Button res:Strings.Assignment="Content=ItemsView.SaveButtonText" Grid.Row="1" Margin="5" Command="{Binding SaveCommand}" Grid.Column="1" d:LayoutOverrides="GridBox"/>
            </Grid>
        </toolkit:HeaderedContentControl>
    </Border>

我的目标是保持HeaderedContentControl不超过其包含的边框,我已经完成了,但是一旦DataGrid超过其分配的空间,我希望它开始滚动。我已经尝试过这种方法,无论是否有父ScrollViewer组合,Grid都会超出HeaderedContentControl的范围,并且不会出现滚动条。我到底在做什么呢?

1 个答案:

答案 0 :(得分:3)

decyclone给出的答案有效。基本上,我将以下内容添加到我的资源字典中,以将HeaderedContentControl的所有实例更改为使用Grid而不是默认的StackPanel:

<ControlTemplate TargetType="HeaderedContentControl">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <ContentControl Content="{TemplateBinding Header}" Grid.Row="0" />
        <ContentControl Content="{TemplateBinding Content}" Grid.Row="1" />
    </Grid>
</ControlTemplate>

这是在given above链接上找到的代码。