我有“服务”自定义控件,不需要是可视的。我只是将它添加到我的视图中,以便它可以绑定到VM并执行一些功能。
样式如下:
<Style TargetType="controls:IdattInteractions">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="controls:IdattInteractions">
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
当初始化视图时,我没有在我的控件上调用OnApplyTemplate
。这是因为ControlTemplate
是空的吗?我如何实现我需要的功能?我需要在这个控件周围查看可视树以获得某些功能,我想在OnApplyTemplate
内完成。
我应该怎么做?
答案 0 :(得分:1)
据我所知,如果你的“控件”不是可视的,那么它应该是某个类的业务逻辑对象,在内存中运行并在需要时与ViewModel交互。无需在XAML中声明它。
答案 1 :(得分:0)
我猜你是通过声明为资源“将它添加到你的视图中”。如果是这种情况,您从未接到OnApplyTemplate调用的原因是因为您的控件不是可视树的一部分。 (测试一下:在调试器中,在构造函数结束时中断。你将拥有一个ResourceDictionary,你的控件就在里面。尝试继续跟随Parent属性,直到你到达你的控件。你会发现Parent将是在层次结构中很快就为null。)
要从OnApplyTemplate接听电话,您需要将自定义控件添加到其他控件的根布局容器中。然后你就会进入视觉树。