如何在列表中显示集合

时间:2013-10-16 09:46:59

标签: wpf data-binding

我想显示一组对象。通过使用ListBox,我可以一个接一个地显示它们。但是我希望每个人都处于不同的位置,这将在其参数中指定。

public class object1
{
//stuff

public double margin_x {get;set;}
public double margin_y {get;set;}
}

//Collection to be displayed:
public ObservableCollection<object1> collection1 {get;set;}

我该怎么做?

然后,如果可能,我可以在一个面板中显示两个集合吗?例如,它们将是正方形的集合1和它们之间的集合线。

1 个答案:

答案 0 :(得分:0)

如果有人对将来感兴趣,我找到了解决方案。要在任何我想要的地方显示项目,我使用ListView和Canvas作为ItemsPanel。为了显示两种对象,我制作了两个透明背景的ListView:

<ListView ItemsSource="{Binding collection1}">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>
            <DataTemplate>
                <Rectangle Margin="{Binding mar}" Width="30" Height="30" Stroke="Black" />
            </DataTemplate>
        </ListView.ItemTemplate>
</ListView>

<ListView ItemsSource="{Binding collection2}">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <Canvas />
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.ItemTemplate>
            <DataTemplate>
                <Line X1="{Binding x1}" X2="{Binding x2}" Y1="{Binding y1}" Y2="{Binding y2}" Stroke="Black" />
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

在代码隐藏中:

public class object1
{
private double x0;
private double y0;

public Thickness mar { get { return new Thickness(x0,y0,0,0); } }
}
public class object2
{
    public x1 {get;set;}
    public x2 {get;set;}
    public y1 {get;set;}
    public y2 {get;set;}
}
public ObservableCollection<object1> collection1 {get;set;}
public ObservableCollection<object2> colletcion2 {get;set;}