3
Q
WPF复合形状
A
回答
1
对于大多数情况下,将它们放在ControlTemplate或DataTemplate中效果最好。这里的控件模板的方式:
<ResourceDictionary>
<ControlTemplate x:Key="MyShape">
<Grid With="..." Height="...">
<Rectangle ... />
<Ellipse ... />
<Path ... />
</Grid>
</ControlTemplate>
</ResourceDictionary>
...
<Canvas ...>
<Control Template="{StaticResource MyShape}" ... />
<Control Template="{StaticResource MyShape}" ... />
<Control Template="{StaticResource MyShape}" ... />
<Control Template="{StaticResource MyShape}" ... />
</Canvas>
而DataTemplate的方式:
<ResourceDictionary>
<DataTemplate x:Key="MyShape">
<Grid With="..." Height="...">
<Rectangle ... />
<Ellipse ... />
<Path ... />
</Grid>
</DataTemplate>
</ResourceDictionary>
...
<Canvas ...>
<ContentPresenter ContentTemplate="{StaticResource MyShape}" ... />
<ContentPresenter ContentTemplate="{StaticResource MyShape}" ... />
<ContentPresenter ContentTemplate="{StaticResource MyShape}" ... />
<ContentPresenter ContentTemplate="{StaticResource MyShape}" ... />
</Canvas>
为了它们之间选择,决定你想要什么额外的功能(如果有的话)。您可能想要将属性添加到控件或数据对象。
- 如果使用ControlTemplate,您的自定义控件可以参与属性继承并成为可视树的一部分,接收所有事件。您还可以在绑定中引用DataContext和TemplatedParent,这更加灵活。
- 如果使用DataTemplate,可以直接针对模型中的对象工作。
除了列出单独的控件,您还可以使用ItemsControl及其子类(ListBox,ComboBox等)来适当地呈现您的形状。
替代方法
另一种完全不同的方式对你的形状的集合转换为图形对象,并使用DrawingImage或DrawingBrush出示。
相关问题
- 1. 复合XML形状
- 2. WPF边界形状
- 3. WPF形状文本
- 4. 移动WPF形状
- 5. WPF剪辑形状
- 6. 绘图问题 - 从其他形状绘制复合形状
- 7. 在Java中创建复合形状2D
- 8. PowerPoint形状不在形状集合
- 9. WPF路径形状标题
- 10. WPF自定义形状
- 11. vba形状集合
- 12. WPF形状矩形边框总是空
- 13. WPF描绘的多边形形状
- 14. 在WPF中选择图形和形状
- 15. 创建树状结合WPF
- 16. 复合WPF和AvalonDock
- 17. WPF复合控件
- 18. 在WPF中合并形状并附加部分拖放
- 19. C#中的相邻形状的联合/ WPF
- 20. 从形状派生的WPF自定义形状类
- 21. WPF/XAML画布中的可重复形状
- 22. 复合状态图
- 23. WPF隐形复选框
- 24. 如何将矩形或圆形状转换为WPF中的笔尖点集合?
- 25. Java中的形状组合?
- 26. opengl适合任意形状
- 27. 对齐C3符合条形图形状
- 28. Cannon.js复杂的形状
- 29. 复杂形状识别
- 30. CSS/HTML复杂形状