我目前有一个从 Control 继承的类,我通过将其样式设置为 xaml 资源中定义的样式来为其提供自定义形状:
<Style x:Key="ParameterStyle" TargetType="{x:Type local:ParameterUI}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ParameterUI}">
<Canvas>
<Ellipse
x:Name="component"
HorizontalAlignment="Left" Height="50"
Margin="0,0,0,50" Stroke="#FF8E8E9F"
VerticalAlignment="Top" Width="50"
StrokeThickness="1.5" Fill="#FF202020"/>
</Canvas>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我能够在这个控件上定义各种鼠标事件并让它按照我的意愿运行。现在,我想在此控件中动态添加嵌套控件,并且我希望这些嵌套控件中的每一个都具有自定义形状和鼠标事件等,所有这些都在运行时定义。几乎没有一个 UI 是静态的,所以它都是在运行时定义的。我尝试添加控件、按钮作为可视子项、逻辑子项,但 UI 中没有显示任何内容。我什至在实时视觉树中都看不到任何东西。我在这里做错了什么?我应该采取不同的方法吗?如何在运行时访问 Style > Setter.Value > ControlTemplate > Canvas 以向其中添加更多内容?此外,控件的每个实例的内容都不同。
我看到这篇文章提出了一个非常相似的问题,但答案是口头描述,我不知道如何实现。我还发现了许多在 xaml 中编写静态 UI 的解决方案,但是当我尝试在 C# 中重新创建它时,它就不起作用了。我找不到有关如何执行此操作的任何其他示例。任何帮助表示赞赏,谢谢!