Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何禁用ContentControl内部的所有绑定/触发_C#_.net_Wpf_User Interface_Controls - Fatal编程技术网

C# 如何禁用ContentControl内部的所有绑定/触发

C# 如何禁用ContentControl内部的所有绑定/触发,c#,.net,wpf,user-interface,controls,C#,.net,Wpf,User Interface,Controls,在这种情况下,我有一个网格,里面有很多控件、按钮、画布、绘图、动画,都绑定到视图模型,我想在我将网格的可见性设置为折叠时,禁用其子对象和子对象的子对象内的所有数据触发器、触发器、绑定等,这样就不会浪费CPU周期,(因为一个沉重的动画正在持续运行),并且不会崩溃 我使用的是一种行为: 但它似乎有一个bug,如果listbox在使用时崩溃,它会导致应用程序崩溃,因此我需要禁用激活该行为的数据绑定 根据我的发现: 将不应用控件的模板 因此,唯一的方法是将所有内容放入controltemplate中

在这种情况下,我有一个网格,里面有很多控件、按钮、画布、绘图、动画,都绑定到视图模型,我想在我将网格的可见性设置为折叠时,禁用其子对象和子对象的子对象内的所有数据触发器、触发器、绑定等,这样就不会浪费CPU周期,(因为一个沉重的动画正在持续运行),并且不会崩溃

我使用的是一种行为:

但它似乎有一个bug,如果listbox在使用时崩溃,它会导致应用程序崩溃,因此我需要禁用激活该行为的数据绑定

根据我的发现:

  • 将不应用控件的模板
因此,唯一的方法是将所有内容放入controltemplate中:

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

因此,在我切换可见性之前,模板不会被应用,所有内容都会关闭


因此,我的问题是:这是解决此问题的正确方法吗?

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


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

数据上下文更改为不更新的内容?