0

私はこの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 が含まれている Border を超えないようにすることですが、DataGrid が割り当てられたスペースを超えたら、スクロールを開始します。親 ScrollViewer の有無にかかわらず、グリッドが HeaderedContentControl の境界を超えてプッシュし、スクロール バーが表示されない組み合わせでこれを試しました。ここで一体何が間違っているのですか?

4

1 に答える 1

3

デサイクロンによって与えられた上記の答えはうまくいきました。基本的に、リソースディクショナリに以下を追加して、HeaderedContentControlのすべてのインスタンスを変更し、デフォルトの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>

これは、上記のリンクにあるコードでした。

于 2012-06-21T19:05:08.613 に答える