Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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
WPF是否可以在不破坏原始绑定的情况下临时更改DataGridColumn的可见性依赖属性?_Wpf_Binding_Datagrid_Dependency Properties - Fatal编程技术网

WPF是否可以在不破坏原始绑定的情况下临时更改DataGridColumn的可见性依赖属性?

WPF是否可以在不破坏原始绑定的情况下临时更改DataGridColumn的可见性依赖属性?,wpf,binding,datagrid,dependency-properties,Wpf,Binding,Datagrid,Dependency Properties,我有一个WPFToolkit DataGrid,其中至少有一个列绑定到属性(通过代理对象,因为列不是可视化树的一部分)。我希望将所有列切换为可见,以便可以基于DataGridColumnHeader(仅当其列第一次可见时创建)执行计算。完成计算后,我想重置列以使用先前设置的绑定 我试图获取并存储绑定表达式等,但没有任何乐趣。我还尝试使用DependencyObject.SetValue()方法以非破坏性方式更改属性值,但这并不能正确地更改值,更不用说保留原始绑定了 有什么想法吗?您需要调用Set

我有一个WPFToolkit DataGrid,其中至少有一个列绑定到属性(通过代理对象,因为列不是可视化树的一部分)。我希望将所有列切换为可见,以便可以基于DataGridColumnHeader(仅当其列第一次可见时创建)执行计算。完成计算后,我想重置列以使用先前设置的绑定

我试图获取并存储绑定表达式等,但没有任何乐趣。我还尝试使用DependencyObject.SetValue()方法以非破坏性方式更改属性值,但这并不能正确地更改值,更不用说保留原始绑定了


有什么想法吗?

您需要调用
SetCurrentValue()
,这样它就不会清除绑定<代码>设置值销毁旧绑定

从MSDN:

此方法由组件使用,该组件以编程方式设置其自身属性之一的值,而不禁用应用程序对该属性的声明使用。SetCurrentValue方法更改属性的有效值,但现有触发器、数据绑定和样式将继续工作

既然你有这个

<TextBox Text="{Binding TestProperty}"/>

您将使用所提供的内容覆盖绑定的设置值。但是,如果调用SetCurrentValue,将确保该属性接受给定的值,但不会破坏任何绑定

请注意,不应在依赖项属性的setter/getter中使用
SetCurrentValue

SetCurrentValue
在需要属性接受给定值但不想覆盖已针对属性配置的任何绑定、触发器或样式的情况下更有用。

谢谢。我会接受这一点作为答案,但我使用的是.NET3.5,而这种方法不可用。我没有说明这一点,所以你的答案是有效的,但是你知道这个的.NET3.5版本吗?我看不到任何候选人。