如何禁用ContentControl中的所有绑定/触发

时间:2014-02-18 01:48:49

标签: c# .net wpf user-interface controls

在这种情况下,我有一个Grid里面有很多控件,按钮,画布,绘图,动画,都绑定到视图模型,我想禁用所有dataTriggers,触发器,绑定其子节点和子节点孩子等,当我将Grid的可见性设置为折叠时,所以它不会浪费CPU周期,(因为重型动画持续运行),而不是崩溃!

我正在使用行为:http://www.microsoft.com/design/toolbox/tutorials/pathlistbox/carousel.aspx

但它似乎有一个错误,如果列表框在使用时崩溃导致应用程序崩溃,所以我需要禁用激活行为的数据绑定,

从我发现的内容:Does Visibility = IsCollapsed skip the data-binding part?

  • 您的控件的模板将不会应用

所以唯一的方法是将所有内容放在controltemplate中:

<ContentControl  Visibility="Collapsed">
    <ContentControl.Template>
        <Grid Name="Heavy Animation control">
            <!--- animations, triggers, bindings ,  -->
        </Grid>
    </ContentControl.Template>

因此,通过这种方式,模板将不会应用,并且在切换可见性之前一切都将关闭。

所以我的问题是:这是解决这个问题的正确方法吗?

1 个答案:

答案 0 :(得分:1)

是。由于ContentControl已折叠,因此在将可见性更改为可见之前,不会应用模板。

但是,我很想知道您的网格是如何设置的,以及是否可以将其分解得更多,以便按钮,画布,绘图,动画等仅在需要时进行初始化。