2

在我的应用程序中,用户应该单击图像,当他单击时会出现一些点。他也可以通过右键单击等来删除它们。

所以我有一个由带有画布的单个窗口(xaml + codebehind)组成的测试项目,我正在处理它的一些事件,这些事件MouseMove将在后面的代码MouseLeftButtonDown中添加点。ObservableCollection<Point>

我已经有了这个,我不知道我应该如何实现数据模板和数据绑定,以便我的网格将包含一个ItemsControl并且每个点都将显示为一个点(Path带有一个EllipseGeometry,以便我可以设置它Center)。

我看了一些教程,但大多数都有很多额外的代码,我很困惑。

4

1 回答 1

6

这是一个完全在 XAML 中实现的简单解决方案:

<!-- Bind ItemsSource to the appropriate collection -->
<ItemsControl ItemsSource="{Binding Points}">
  <ItemsControl.ItemContainerStyle>
    <Style TargetType="FrameworkElement">
      <Setter Property="Canvas.Left" Value="{Binding X}" />
      <Setter Property="Canvas.Top" Value="{Binding Y}" />
    </Style>
  </ItemsControl.ItemContainerStyle>
  <ItemsControl.ItemTemplate>
    <DataTemplate DataType="Point">
      <Ellipse Fill="Blue"
               Width="8"
               Height="8"
               Margin="-4,-4,4,4" />
    </DataTemplate>
  </ItemsControl.ItemTemplate>
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <Canvas IsItemsHost="True" />
    </ItemsPanelTemplate>
  </ItemsControl.ItemsPanel>
</ItemsControl>
于 2013-11-05T20:10:47.780 回答