【问题标题】:Dependency Property Set Priority: CodeBehind vs. XAML依赖属性集优先级:CodeBehind 与 XAML
【发布时间】:2010-04-28 13:08:19
【问题描述】:

当我从代码初始化控件属性时,绑定到 XAML 上定义的同一属性不起作用。为什么?

例如,我在启动时使用以下语句设置控件属性:

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

在 xaml 上,我以这种方式绑定 myControl 的属性:

 IsEnabled="{Binding Path=IsKeyControlEnabled}"

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

我该怎么办?

【问题讨论】:

    标签: wpf xaml binding dependency-properties


    【解决方案1】:

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

    IsKeyControlEnabled = DefaultProp.IsEnabled;
    

    【讨论】:

    • 就没有别的办法了吗?因为设置de默认值的类是我用来初始化window的几个控件的外部通用类。有一个函数(带有类型 Control 输入参数)定义了特定控件的一些设置。而属性“IsKeyControlEnabled”在窗口上管理。
    • 你为什么要寻找另一种方式? IsKeyControlEnabled 无论如何都会保留该值,因为绑定...
    • 这是设计使然,设置本地值会覆盖绑定,所以不,没有“其他方式”,因为框架是这样设计的
    猜你喜欢
    • 2015-08-24
    • 2011-05-13
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多