0

オブジェクトのコレクションを表示したいと思います。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 つのパネルに 2 つのコレクションを表示することはできますか? たとえば、それらは正方形の collection1 とそれらの間の線の collection2 になります。

4

1 に答える 1

0

誰かが将来に興味があるなら、私は解決策を見つけました。好きな場所にアイテムを表示するには、キャンバスを ItemsPanel として ListView を使用しました。2 種類のオブジェクトを表示するために、背景が透明な 2 つの 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;}
于 2013-10-17T06:23:56.137 に答える