0

我目前尝试为类似绘画的 WPF 应用程序创建类。我必须基类 LineMovement(从 StartPoint 到 EndPoint 的线)和 PathMovement(穿过 PointCollection 类型的属性 Points 中指定的所有点的线)。这些类从 Control 继承并通过 ControlTemplate 获得它们的外观。

现在我想将(我称之为)PointMovers 添加到 ControlTemplate。这些应该是驻留在任一运动类中的每个点上的小视觉元素。它们应该成为一种抓取机制来拖动潜在的点。

问题当然是我不知道如何在 ControlTemplate 中创建可变数量的元素。如果我能做这样的事情会很酷:

<Style x:Key="{x:Type mov:PathMovement}" TargetType="{x:Type mov:PathMovement}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type mov:PathMovement}">
                <Grid>
                    <Polyline Points="{TemplateBinding Points}" />
                    <!-- interesting part start -->
                    <foreach loopvariable="Point" in="{TemplateBinding Points}">
                        <PointMover Point="Point" />
                    </foreach>
                    <!-- interesting part end -->
                </Grid>
           </ControlTemplate>
       </Setter.Value>
  </Setter>
</Style>

这可能吗?您是否有另一种可行的方法?

提前致谢!

4

1 回答 1

1

将 anItemsControl与 an 结合使用ItemTemplate

<ItemsControl ItemsSource="{Binding Points}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <!-- rendered for each point -->
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

根据您的用例的声音,您可能还想阅读AdornerLayers.

于 2009-08-24T14:08:27.353 回答