WPF ControlTemplate与foreach?
问题描述:
我目前尝试为类似WPF的油漆应用程序创建类。我必须将类LineMovement(从StartPoint到EndPoint的线)和PathMovement(线经过属性Points PointCollection中指定的所有点)。这些类从Control继承,并通过ControlTemplate获取它们的外观。WPF ControlTemplate与foreach?
现在我想添加(我所说的)PointMover到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>
这可能吗?你脑海中有另一种方法可行吗?
在此先感谢!
答
结合使用的ItemsControl
有ItemTemplate
:
<ItemsControl ItemsSource="{Binding Points}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- rendered for each point -->
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
通过您的使用案例的声音,你可能还需要在AdornerLayer
s的读取了。
看起来不错。我会试试这个。 但是,关于您对AdornerLayers的建议:我读过没有办法在XAML中指定它们,所以我不会使用它(不要混合使用XAML和代码,而不是完全需要)。 – chrischu 2009-08-24 14:27:12