0

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

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

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

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

有了这个依赖属性,我希望设置文本框的 SelectedHotKey,它将Text适当地改变。

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

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

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

有任何想法吗?让我知道是否需要进一步澄清。

4

1 回答 1

4

不要将代码逻辑放在包装依赖属性的 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
}
于 2012-07-26T22:56:44.033 回答