创建无模板的用户控件。 OnApplyTemplate

时间:2011-11-14 20:32:27

标签: c# silverlight xaml mvvm

我有“服务”自定义控件,不需要是可视的。我只是将它添加到我的视图中,以便它可以绑定到VM并执行一些功能。

样式如下:

<Style TargetType="controls:IdattInteractions">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="controls:IdattInteractions">
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

当初始化视图时,我没有在我的控件上调用OnApplyTemplate。这是因为ControlTemplate是空的吗?我如何实现我需要的功能?我需要在这个控件周围查看可视树以获得某些功能,我想在OnApplyTemplate内完成。

我应该怎么做?

2 个答案:

答案 0 :(得分:1)

据我所知,如果你的“控件”不是可视的,那么它应该是某个类的业务逻辑对象,在内存中运行并在需要时与ViewModel交互。无需在XAML中声明它。

答案 1 :(得分:0)

我猜你是通过声明为资源“将它添加到你的视图中”。如果是这种情况,您从未接到OnApplyTemplate调用的原因是因为您的控件不是可视树的一部分。 (测试一下:在调试器中,在构造函数结束时中断。你将拥有一个ResourceDictionary,你的控件就在里面。尝试继续跟随Parent属性,直到你到达你的控件。你会发现Parent将是在层次结构中很快就为null。)

要从OnApplyTemplate接听电话,您需要将自定义控件添加到其他控件的根布局容器中。然后你就会进入视觉树。