【问题标题】:How to disable all binding/triggering inside a ContentControl如何禁用 ContentControl 内的所有绑定/触发
【发布时间】:2014-03-17 13:28:22
【问题描述】:

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

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

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

根据我的发现:Does Visibility = IsCollapsed skip the data-binding part?

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

所以唯一的办法就是把所有东西都放在一个控制模板中:

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

因此,在我切换可见性之前,不会应用模板并且一切都会关闭。

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

【问题讨论】:

  • DataContext 更改为未更新的内容?

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2012-12-20
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 2015-02-08
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多