Silverlight 4.0 ItemsControl中添加的ScrollViewer中的WrapPanel会导致丢失包装行为
我正在使用ItemsControl中的ItemsPanel中的WrapPanel。只要添加的项目适合大小,这项工作就完美无瑕。为了满足内容超出大小的情况,我添加了一个ScrollViewer。但现在,这些项目仅垂直列出,即使它们都适合。如果可能的话,知道我要做什么吗 这是我的xaml:Silverlight 4.0 ItemsControl中添加的ScrollViewer中的WrapPanel会导致丢失包装行为,silverlight-4.0,silverlight-toolkit,scrollviewer,wrappanel,Silverlight 4.0,Silverlight Toolkit,Scrollviewer,Wrappanel,我正在使用ItemsControl中的ItemsPanel中的WrapPanel。只要添加的项目适合大小,这项工作就完美无瑕。为了满足内容超出大小的情况,我添加了一个ScrollViewer。但现在,这些项目仅垂直列出,即使它们都适合。如果可能的话,知道我要做什么吗 这是我的xaml: <ItemsControl Name="LicSwUserItemsCtl" Grid.Column="1" Grid.Row="2"> <ItemsControl.Template>
<ItemsControl Name="LicSwUserItemsCtl" Grid.Column="1" Grid.Row="2">
<ItemsControl.Template>
<ControlTemplate>
<ScrollViewer Name="Scroller" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
<ItemsPresenter />
</ScrollViewer>
</ControlTemplate>
</ItemsControl.Template>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Orientation="Vertical" HorizontalAlignment="Stretch" Margin="0" Name="wrpPanel" VerticalAlignment="Stretch" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border x:Name="BrdrStkPnlSwLicUser" CornerRadius="2" BorderThickness="1" Width="120" Height="20" Margin="0,0,3,0" BorderBrush="Transparent">
<StackPanel Name="StkPnlSwLicUser" Orientation="Horizontal" Height="18" Width="120" Margin="0" MouseEnter="StackPanel_MouseEnter" MouseLeave="StackPanel_MouseLeave" MouseLeftButtonUp="StackPanel_MouseLeftButtonUp" >
<Image Source="{Binding Converter={StaticResource IconImage}}" Margin="2,0,3,0" Height="16" Width="16" />
<TextBlock Name="txtBlk" Text="{Binding NodeText}" />
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
我在发布问题之前就找到了解决方案。但我认为这可能对其他人有用 我向ScrollViewer添加了一个SizeChanged处理程序
SizeChanged="Scroller_SizeChanged"
在处理程序中,我添加了以下代码
private void Scroller_SizeChanged(object sender, SizeChangedEventArgs e)
{
WrapPanel wrpPanel = (WrapPanel)LicSwUserItemsCtl.GetItemsHost();
wrpPanel.MaxHeight = ((ScrollViewer)sender).ActualHeight;
wrpPanel.MaxWidth = ((ScrollViewer)sender).ActualWidth;
}
如果可以通过在xaml中绑定MaxWidth、MaxHeight属性来实现,我会很感兴趣