在运行时调整元素大小和拆分布局

时间:2014-04-11 17:06:35

标签: c# wpf split resize

我在WPF / C#中有一个简单的问题。 我想将一些图像拖放到一个布局中,并根据图像的数量调整它们的大小(它可以超过2个!)。

What I want

我对Drag& Drop系统没有任何问题。我的问题是关于调整大小元素/拆分布局。我尝试了一些事情,例如将ItemsControlWrapPanel一起使用,但它无效。我只看到全尺寸的图像1。

  • 如何做我想要的?
  • ItemsControl WrapPanel是一个好方法吗?
  • 如何让WrapPanel自动调整图像大小?

这是我的XAML

<ItemsControl x:Name="list" AllowDrop="True" 
    Drop="list_Drop" Background="Transparent" Grid.IsSharedSizeScope="True" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled" BorderBrush="{x:Null}">
    <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel ScrollViewer.VerticalScrollBarVisibility="Disabled" VerticalAlignment="Center" HorizontalAlignment="Center"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
</ItemsControl>

这是我的代码隐藏

private void list_Drop(object sender, DragEventArgs e)
{
    Thumbnail thumbnail = sender as Thumbnail;
    Image addedImg = new Image();
    addedImg.Source = (BitmapImage)e.Data.GetData(typeof(BitmapImage));
    list.Items.Add(addedImg);
    this.UpdateLayout();
}

谢谢!

1 个答案:

答案 0 :(得分:2)

将ItemsPanel设置为UniformGrid的ItemsControl。

<ItemsControl ItemsSource="{Binding ImagesList}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid/>
        </ItemsPanelTemplate>
    <ItemsControl.ItemsPanel>
</ItemsControl>