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