Выровняйте сетку вместе с содержимым средства просмотра прокрутки, а не всего средства просмотра прокрутки, включая полосу прокрутки? - PullRequest
1 голос
/ 23 ноября 2011

У меня есть следующий сценарий в XAML:

<Grid Grid.IsSharedSizeScope="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid x:Name="gridLabels" Grid.Column="0">
        <Grid.RowDefinitions>
            <Row SharedSizeGroup="FirstRow" MinHeight=24/>
            <Row SharedSizeGroup="SecondRow" MinHeight=24/>
            <Row SharedSizeGroup="ThirdRow" MinHeight24/>
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0">Top Item:</TextBlock>
        <TextBlock Grid.Row="1">Middle Item:</TextBlock>
        <TextBlock Grid.Row="2">Bottom Item:</TextBlock>
    </Grid>
    <ScrollViewer x:Name="scrVwItems" Grid.Column="1" VerticalScrollBarVisibility="Disabled"
            HorizontalScrollBarVisibility="Visible" >
        <ItemsControl ItemSource="{Binding Bondage}">
            <!--etc-->
        </ItemsControl>
    </ScrollViewer>
</Grid>

Внутри ItemsControl элементы DataTemplate d имеют свои собственные сетки с набором SharedSizeGroup, так что TextBlock s и т.д. совпадают с метками TextBlockдалеко слева.

Проблема, которую я получаю, состоит в том, что до заполнения ItemsControl SharedSizeGroup s не выстраиваются в линию, а текст "Bottom Item:" падает вниз по горизонтали с полосой прокрутки моего ScrollViewer.

Есть ли простой способ выровнять сетку "gridLabels" по области содержимого ScrollViewer, а не по всему самому ScrollViewer?

1 Ответ

1 голос
/ 23 ноября 2011

Сортированный, просто дал ItemsControl (который является содержимым ScrollViewer) имя и использовал привязку ElementName к его ActualHeight из "gridLabels" .Height. Также применяется MinHeight к ItemsControl.

<Grid Grid.IsSharedSizeScope="True">
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Grid x:Name="gridLabels" Grid.Column="0" 
        Height={Binding ElementName=myItemsControl, Path=ActualHeight}">
        <Grid.RowDefinitions>
             <Row SharedSizeGroup="FirstRow" MinHeight=24/>
             <Row SharedSizeGroup="SecondRow" MinHeight=24/>
             <Row SharedSizeGroup="ThirdRow" MinHeight24/>
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0">Top Item:</TextBlock>
        <TextBlock Grid.Row="1">Middle Item:</TextBlock>
        <TextBlock Grid.Row="2">Bottom Item:</TextBlock>
    </Grid>
    <ScrollViewer x:Name="scrVwItems" Grid.Column="1" VerticalScrollBarVisibility="Disabled"
        HorizontalScrollBarVisibility="Visible" >
        <ItemsControl ItemSource="{Binding Bondage}" x:Name="myItemsControl" MinHeight="150">
             <!--etc-->
        </ItemsControl>
    </ScrollViewer>
</Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...