Это можно исправить, привязав ширину WrapPanel
к ActualWidth
ListBox
:
<WrapPanel Width="{Binding RelativeSource={RelativeSource AncestorType=ListBox}, Path=ActualWidth"}
(если, конечно, это не то, что работает только в WPF, а не в Silverlight, что я не знаю.)
Любопытно, почему ListBox
делает это, а ItemsControl
- нет. WrapPanel
имеет правильное поле, и элементы, которые в нем содержатся, правильно переносятся на этой странице:
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="700"/>
</Grid.ColumnDefinitions>
<ItemsControl
Background="Azure"
Margin="5">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel
Background="Lavender"
Margin="10"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ListBoxItem>adsk flaskjf lkasjd flaskdjf laskdj</ListBoxItem>
<ListBoxItem>adsk flaskjf lkasjd flaskdjf laskdj</ListBoxItem>
<ListBoxItem>adsk flaskjf lkasjd flaskdjf laskdj flaksjf laskjf aslkjf alsjkf lsafdkj </ListBoxItem>
<ListBoxItem>adsk flaskjf lkasjd flaskdjf laskdj flaksjf laskjf aslkjf alsjkf lsafdkj </ListBoxItem>
<ListBoxItem>adsk flaskjf lkasjd flaskdjf laskdj flaksjf laskjf aslkjf alsjkf lsafdkj </ListBoxItem>
<ListBoxItem>adsk flaskjf lkasjd flaskdjf laskdj flaksjf laskjf aslkjf alsjkf lsafdkj </ListBoxItem>
</ItemsControl>
</Grid>
</Page>
Измените ItemsControl
на ListBox
, и это не так.