【问题标题】:WrapPanel within ItemsControl added ScrollViewer causes loosing wrapping behaviorItemsControl 中的 WrapPanel 添加了 ScrollViewer 导致失去包装行为
【发布时间】:2011-03-30 14:27:05
【问题描述】:

我正在使用 ItemsControl 中的 ItemsPanel 中的 WrapPanel。只要添加的物品适合尺寸,这就会完美。为了满足内容超出大小的情况,我添加了一个ScrollViewer。但是现在这些项目仅垂直列出,即使它们都适合。任何想法是否可能以及我必须做什么。

这是我的 xaml:

<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>

【问题讨论】:

    标签: silverlight-4.0 silverlight-toolkit scrollviewer wrappanel


    【解决方案1】:

    我实际上是在发布我的问题之前找到了解决方案。但我认为这可能对其他人有用。

    我向 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 属性来实现,我会很感兴趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-09
      • 2016-02-18
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多