WPF - WrapPanel / Grid中的ItemControl DataBinding

时间:2016-06-10 21:41:42

标签: c# .net wpf xaml data-binding

我想从我自己的数据类型中读出图像,并通过ItemControl Binding将List同步到Grid / WrapPanel。

我的XAML:

    <WrapPanel >
    <ItemsControl Name="images">
        <ItemsControl.ItemTemplate>
            <DataTemplate>

                <Image Source="{Binding Link}" Stretch="None"  ></Image>


            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</WrapPanel>

C#代码:

 public MainWindow()
    {
        InitializeComponent();
        List<Movie> items = new List<Movie>();
        items.Add(new Movie() { Name = "Movie1", Link = "http://www.airvana.com/default/cache/file/1601D22D-9266-DE31-D6B8D178DB2933DC_small.png", Column =0 });

      items.Add(new Movie() { Name = "Movie2", Link = "http://www.airvana.com/default/cache/file/1601D22D-9266-DE31-D6B8D178DB2933DC_small.png"});
      items.Add(new Movie() { Name = "Movie2", Link = "http://www.airvana.com/default/cache/file/1601D22D-9266-DE31-D6B8D178DB2933DC_small.png"});
       // items.Add(new Movie() { Name = "Movie3"});

        images.ItemsSource = items;
    }
}
public class Movie
{
    public string Name { get; set; }
    public string Link { get; set; }
}

这一切都很好,只有我遇到的问题(以及为什么我尝试使用WrapPanel而不是网格)是所有3张图像都在彼此之下,而不是彼此相邻。

how it looks

如果我在没有Binding的情况下执行此操作,只使用WrapPanel并添加3张图像,则效果非常好。

基本上我想做的是一组图像,比如图片拼贴 - 有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

  

ItemsPanelTemplate,用于定义用于项目布局的面板。 ItemsControl的默认值是ItemsPanelTemplate,它指定StackPanel

acl liberaip src 130.44.0.215 acl block url_regex -i youtube facebook http_access allow liberaip !block 中缠绕一堆垂直堆叠的图像不会使它们成为水平。您需要将布局更改为:

WrapPanel