Проблема использования * в размерах сетки - PullRequest
1 голос
/ 15 января 2010

Когда я устанавливаю ширину столбца или высоту строки на звезду и заполняю содержимое, которое больше доступного прямоугольника, строка продолжает расти «под землей»:

<Window x:Class="Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="100" Width="100">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <StackPanel>
            <Button Content="Button" />
            <Button Content="Button" />
            <Button Content="Button" />
        </StackPanel>
        <StackPanel Grid.Row="1" 
                ScrollViewer.CanContentScroll="True" 
                ScrollViewer.VerticalScrollBarVisibility="Auto" 
                ScrollViewer.IsDeferredScrollingEnabled="True">
            <Button Content="Button" />
            <Button Content="Button" />
            <Button Content="Button" />
        </StackPanel>
    </Grid>
</Window>

Я хочу, чтобы StackPanel не росла под землей, вместо этого она должна показывать полосы прокрутки.

Обратите внимание, мне нужен динамический размер, поэтому все меняется в зависимости от размера пользователя родителей.
У меня такая же проблема со столбцами.
PS. RowDefinition.Height всегда * по умолчанию.

UPDATE

Полагаю, проблема в сетке, и предыдущий фрагмент, который я разместил, не предоставил всю историю, пожалуйста, просмотрите:

<Window x:Class="Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"            
Title="Window1" Height="200">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="20"/>
            <RowDefinition/>
            <RowDefinition Height="20"/>
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="1">
            <StackPanel>
                <TextBlock Text="Hello"/>
                <TextBox Text="World!"/>
            </StackPanel>
            <ScrollViewer>
                <StackPanel>
                    <Button Content="Button"/>
                    <Button Content="Button"/>
                    <Button Content="Button"/>
                    <Button Content="Button"/>
                    <Button Content="Button"/>
                </StackPanel>
            </ScrollViewer>
        </StackPanel>
    </Grid>
</Window>

1 Ответ

2 голосов
/ 15 января 2010

Я не уверен, что StackPanel имеет встроенный ScrollViewer, поэтому установка ScrollViewer.* подключенных объектов действительно не влияет на него.

Вы пробовали обернуть StackPanel с помощьюScrollViewer явно?Например:

<ScrollViewer Grid.Row="1"
       ScrollViewer.CanContentScroll="True" 
       ScrollViewer.VerticalScrollBarVisibility="Auto" 
       ScrollViewer.IsDeferredScrollingEnabled="True">
    <StackPanel>
        <Button Content="Button" />
        <Button Content="Button" />
        <Button Content="Button" />
    </StackPanel>
</ScrollViewer>
...