【问题标题】:DataTemplates to display a collection of Points as Ellipses in WPFDataTemplates 在 WPF 中将点的集合显示为椭圆
【发布时间】:2013-11-16 20:14:27
【问题描述】:

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

所以我有一个由带有画布的单个窗口(xaml + 代码隐藏)组成的测试项目,我正在处理它的一些事件,如MouseMoveMouseLeftButtonDown,它们将为@987654323 添加点@ 在后面的代码中。

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

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

【问题讨论】:

    标签: wpf datatemplate itemscontrol itemsource


    【解决方案1】:

    这是一个完全在 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>
    

    【讨论】:

    • 第一次尝试就成功了!我打算稍微调整一下,但这就是我想要的,谢谢!!
    • 我在椭圆本身上设置了一个 RenderTransform(我确信我过去已经这样做了),但只有在设置了 Item CONTAINER Style 之后才起作用。棘手的WPF!感谢您的回答!
    • 我对 WPF 很陌生,所以这可能是一个愚蠢的问题:是否可以调整此解决方案以在同一画布上绘制其他内容?我想绑定一个点集合和一个矩形,它们属于一个包含在视图框中的画布。到目前为止,我想出了使用折线并将其点集合和矩形画布左侧和顶部绑定,但折线不是我想要的。我只想看点,这个解决方案很棒,但我不知道如何在同一个画布上显示我的矩形
    • 这里缺少一些东西...不是父 Control&lt;ItemsControl /&gt; 部分吗?
    猜你喜欢
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2019-01-21
    • 2021-11-19
    • 1970-01-01
    • 2020-11-13
    相关资源
    最近更新 更多