Почему мой ScrollViewer разрушает мою сетку? WPF - PullRequest
9 голосов
/ 07 сентября 2011

Проблема: при добавлении ScrollViwer вокруг сетки масштабирование сетки отменяется!

Eksampel: Я создал сетку шириной 3 столбца, 1. coulymn всегда должен быть в 2 раза больше, чем столбцы 2 и 3! Без ScrollViewer это всегда верно, но при добавлении он позволяет каждому столбцу выбирать свой собственный размер.

<Window x:Class="alternatingGridRow.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="200" Width="Auto" Loaded="WindowLoaded">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
    <Grid x:Name="LayoutRoot" ShowGridLines="True">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" MinHeight="23" MaxHeight="60"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
            <TextBlock HorizontalAlignment="Stretch" Text="sdasdasdasdsadsadasddasdck" TextWrapping="Wrap" VerticalAlignment="Top" />
            <TextBlock Foreground="Red" Grid.Column="1" HorizontalAlignment="Stretch" Text="sdasdasdasdsadsadasddasdck" TextWrapping="Wrap" VerticalAlignment="Top" />
    </Grid>
</ScrollViewer>

Как вы ясно видите, коэффициенты масштабирования совершенно неверны! Как столбец 2. путь большой! и 3. столбец имеет некоторый случайный размер ...

Неправильные коэффициенты масштабирования

Любой совет по этому поводу хорошо принят .... Ура Мартин

Ответы [ 3 ]

5 голосов
/ 07 сентября 2011

Вы просите сетку назначить процент бесконечного пространства для каждого столбца. Бесконечно, потому что на ScrollViewer включена горизонтальная прокрутка, и весь смысл ScrollViewers заключается в виртуализации пространства. Так что то, что вы просите это сделать, даже не имеет смысла.

5 голосов
/ 07 сентября 2011

Текущая настройка неверна, потому что ScrollViewer не ограничивает ширину и высоту своего дочернего элемента (то есть неограниченно), более того, Grid всегда заполняет все доступное горизонтальное и вертикальное пространство, доступное в его родительском контейнере и именно поэтому вы видите это странное поведение. Вы должны сделать одно из следующих действий:

  1. либо удалите ScrollViewer, как вы упомянули.
  2. или установите фиксированную высоту и ширину для вашего Grid.
4 голосов
/ 08 сентября 2011

Хорошо, я понимаю вашу точку зрения, почему столбец имеет размер винт.
Но .. Я думал о решении, когда читал ваши посты ...

Как, сказал Мухаммед, установить фиксированную ширинуна моей сетке, ну .. Я хочу, чтобы моя сетка была такой же ширины, как scrollviewer, если только она не становится маленькой, тогда я хочу, чтобы scrollviewer вступил в силу!Итак, мое решение:

MinWidth="500" Width="{Binding ActualWidth, ElementName=scrollviewer}"

<Window x:Class="alternatingGridRow.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="200" Width="Auto">
<ScrollViewer x:Name="scrollviewer" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
    <Grid x:Name="LayoutRoot" ShowGridLines="True" MinWidth="500" Width="{Binding ActualWidth, ElementName=scrollviewer}">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" MinHeight="23" MaxHeight="60"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="2*"/>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="1*"/>
        </Grid.ColumnDefinitions>
            <TextBlock HorizontalAlignment="Stretch" Text="sdasdasdasdsadsadasddasdck" TextWrapping="Wrap" VerticalAlignment="Top" />
            <TextBlock Foreground="Red" Grid.Column="1" HorizontalAlignment="Stretch" Text="sdasdasdasdsadsadasddasdck" TextWrapping="Wrap" VerticalAlignment="Top" />
    </Grid>
</ScrollViewer>

</Window>

(фиксировано только по горизонтали)

Thx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...