在初始化时不显示依赖项属性

时间:2012-07-26 22:45:44

标签: c# .net wpf data-binding dependency-properties

我不确定这是否可行,但这是我的设置:

我有一个自定义文本框,仅用于处理热键选择。在这里,我有一个DependencyProperty用于SelectedHotKey

然后我有一个自定义控件,它是一个标签,文本框和一个按钮。此控件还公开与TextBox同名的DependencyProperty,它仅通过以下方式与TextBox绑定:

SelectedHotKey="{Binding ElementName=Main, Path=SelectedHotKey, Mode=TwoWay}"

使用此依赖项属性,我希望设置文本框的SelectedHotKey,它将适当地更改Text

然后我使用该用户控件并绑定到我的ViewModel。

除了初始化案例外,我完成了所有这些工作。

当我的ViewModel已经设置并传递给绑定中的UserControl时,该初始设置器甚至不会被命中,因此它不会通过我的控件传播。我考虑过放入一个PropertyMetaData方法,但这是一个静态方法,我无法访问我的实例文本框。

有什么想法吗?如果我需要进一步澄清,请告诉我。

1 个答案:

答案 0 :(得分:3)

不要将代码逻辑放在包装依赖项属性的CLR属性中。正如您已经看到的那样,不能保证它们将被调用,因为框架可以直接在依赖属性上调用SetValue

您处于正确的轨道:您必须使用依赖项属性元数据。使用属性更改回调的第一个参数访问实例。

DependencyProperty SomeProperty = DependencyProperty.Register(
    "Some",
    propertyType,
    ownerType,
    new FrameworkPropertyMetadata(defaultValue, OnSomePropertyChanged));

static void OnSomePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {
    // "d" is your instance here, cast it to the required type
}
相关问题