2

私はWPFを学び始めたばかりで、物事を行う正しい方法を学ぼうとしています。ItemsControlを使用して、ポイントで構成されるObservableコレクションにバインドしています。各点は楕円の中心を表します。ただし、現在のアイテム、EllipseGeometryのcenterプロパティにバインドする方法がわかりません。

<EllipseGeometry Center="{Binding Path=????}" RadiusX="10" RadiusY="10"/>

しかし、これは私に期待される出力を与えるので、私はそれが多かれ少なかれ機能していることを知っています。現在のオブジェクトの言い方がわかりません。

<EllipseGeometry Center="10,10" RadiusX="{Binding Path=X}" RadiusY="{Binding Path=Y}"/>

C#コード:

public class ViewModel
{
    public ObservableCollection<Point> PointList { get; private set; }

    public ViewModel()
    {
        PointList = new ObservableCollection<Point>();
        AddPoint(new Point(10, 10));
        AddPoint(new Point(200, 200));
        AddPoint(new Point(500, 500));
    }

    public void AddPoint(Point p)
    {
        PointList.Add(p);
    }

}

XAMLコード:

<ItemsControl Grid.Row="0" ItemsSource="{Binding Path=PointList}">
    <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
        <Canvas />
    </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
    <DataTemplate>
        <Path Fill="Gold" Stroke="Black" StrokeThickness="1" Tag="Hi" >
        <Path.Data>
            <EllipseGeometry Center="{Binding Path=????}" RadiusX="10" RadiusY="10"/>
        </Path.Data>
        </Path>
        <!--<Rectangle Fill="Red" Width="25" Height="25"/>-->
    </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemContainerStyle>
    <Style>
        <!--<Setter Property="Canvas.Left" Value="{Binding Path=X}"/>
        <Setter Property="Canvas.Top" Value="{Binding Path=Y}"/>-->
    </Style>
    </ItemsControl.ItemContainerStyle>
</ItemsControl>
4

1 に答える 1

7

パスを完全に省略すると、現在のオブジェクトを参照します。または、期間を指定することもできます。したがって、これらはすべて同等です。

Center="{Binding}"
Center="{Binding .}"
Center="{Binding Path=.}"
于 2012-05-24T20:45:23.997 に答える