Silverlight WrapPanel не оборачивается - PullRequest
1 голос
/ 27 января 2010

У меня есть элемент управления с прокруткой внутри, у меня есть обертка

вещь не обернется, пока я не установлю ей ширину. Я не понимаю, как использовать этот элемент управления? Могу ли я использовать его без ширины? Я хочу использовать растяжку авто.

Ответы [ 2 ]

3 голосов
/ 27 января 2010

Обертывающая панель должна откуда-то приобретать, насколько она может быть шириной. Похоже, вы хотите, чтобы он был ограничен доступным пространством в контейнере. В этом случае контейнер должен иметь тип, который будет ограничивать ширину. Например, следующее прекрасно работает: -

<UserControl x:Class="SilverlightApplication1.WrapPanelStuff"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:toolkitControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit">
  <Grid x:Name="LayoutRoot" Background="White">
        <ScrollViewer>
            <toolkitControls:WrapPanel>
                <Border BorderBrush="Black" BorderThickness="2">
                    <TextBlock Text="This should be quite long so that it takes up some horizontal space" />
                </Border>
                <Border BorderBrush="Black" BorderThickness="2">
                    <TextBlock Text="This should be quite long so that it takes up some horizontal space" />
                </Border>
                <Border BorderBrush="Black" BorderThickness="2">
                    <TextBlock Text="This should be quite long so that it takes up some horizontal space" />
                </Border>
            </toolkitControls:WrapPanel>
        </ScrollViewer>
    </Grid>
</UserControl>

Grid ограничивает WrapPanel доступной шириной. Замените Grid на Canvas, и он больше не работает, поскольку Canvas не ограничивает ширину его содержимого.

1 голос
/ 27 января 2010

Логика WrapPanel будет продолжать размещать дочерние элементы в одной строке, пока она не будет каким-либо образом ограничена. Вероятно, самый простой способ сделать это без указания ширины - отключить горизонтальную полосу прокрутки ScrollViewer.

    <ScrollViewer HorizontalScrollBarVisibility="Disabled">
         <toolkitControls:WrapPanel />
    </ScrollViewer>

Затем вы можете растянуть содержащий ItemsControl по горизонтали, и это должно привести к принудительному переносу.

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