Получить ширину, доступную для детей в Scrollviewer - PullRequest
2 голосов
/ 01 июня 2009

Как получить ширину, доступную для дочерних элементов средства просмотра прокрутки в XAML? Спасибо.

1 Ответ

3 голосов
/ 01 июня 2009

Я не знаю прямого способа сделать это, поскольку WPF автоматически передает доступное пространство в функцию Measure () дочерних элементов управления, чтобы их размер соответствовал доступному пространству.

Обратите внимание, что по умолчанию он проходит в бесконечности для вертикального направления, поскольку содержимое может прокручиваться вечно по вертикали. Вы можете изменить видимость полос прокрутки как в вертикальном, так и в горизонтальном направлении, чтобы определить, будет ли бесконечность проходить по вертикали, по горизонтали или по обеим.

Лучший способ выяснить, насколько широкими должны быть дочерние элементы управления в макете в чистом XAML, - создать пустой элемент управления, например пустую сетку, и затем привязать его свойство ActualWidth:

<ScrollViewer>
    <StackPanel>
        <Grid x:Name="MeasureGrid"/>
        <TextBox Text="{Binding ElementName=MeasureGrid, Path=ActualWidth}"/>
    </StackPanel>
</ScrollViewer>

Кроме отображения ширины, которая фактически доступна для элементов управления, я не вижу другого использования этой информации в XAML - все другие сценарии, о которых я могу подумать, могут использовать эту информацию неявно. Можете ли вы дать нам больше информации о том, чего вы пытаетесь достичь?

...