2010-04-28 35 views
2

当我从代码初始化控件属性时,与在XAML上定义的相同属性的绑定不起作用。为什么?依赖项属性集优先级:CodeBehind与XAML

例如,我在启动时设定的控制特性与此语句:

myControl.SetValue(UIElement.VisibilityProperty, DefaultProp.Visibility); 
myControl.SetValue(UIElement.IsEnabledProperty, DefaultProp.IsEnabled); 

和XAML我结合myControl的属性以这种方式:

IsEnabled="{Binding Path=IsKeyControlEnabled}" 
现在

,当属性“ IsKeyControlEnabled“更改为false,myControl保持启用状态(因为它使用true值进行初始化)。

我该怎么办?

回答

3

这是正确的行为 - 它是由设计。显式指定的值覆盖通过数据绑定获取的值。 WPF绑定消除了明确引用UI对象及其属性的需要。要设置属性的值,只需更改绑定的值 - 在您的情况下:

IsKeyControlEnabled = DefaultProp.IsEnabled; 
+0

是不是有其他方法?因为设置de默认值的类是我用来初始化窗口的几个控件的外部泛型类。有一个功能(带有一个控制输入参数类型)定义了特定控制的一些设置。 虽然在窗口上管理属性“IsKeyControlEnabled”。 – 2010-04-28 13:46:16

+3

你为什么要寻找另一种方式? 'IsKeyControlEnabled'持有值无论如何,由于绑定... – 2010-04-28 14:09:12

+0

这是通过设计,设置本地值将覆盖绑定(S),所以不,没有“其他方式”,因为框架是这样设计的 – miguel 2010-04-28 21:21:19