wpf - WPF 中的自定义依赖属性和双向绑定(bind)

标签 wpf data-binding dependency-properties

我们有一个派生自 DependencyObject 的对象,并实现了一些 DependencyProperties。

基本上是这样的:

class Context : DependencyObject {
   public static readonly DependencyProperty NameProperty =
   DependencyProperty.Register ("Name", typeof (string), typeof (Context), new PropertyMetadata (""));
    public string Name {
        get {
            return (string)this.GetValue (NameProperty);
        }
        set {
            this.SetValue (NameProperty, value);
        }
    }
}

这有效,属性已设置,可以绑定(bind)等。当我使用 TwoWay 绑定(bind)从 WPF 绑定(bind)到属性时,问题就出现了。 TwoWay 部分从未真正发生过,WPF 从未调用此属性的集合。我已经像这样设置了我的绑定(bind):
<TextBox Text="{Binding Path=Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

在这种情况下,在文本框中键入应该会立即更新 Name 属性,但事实并非如此。如果我将 Name 属性更改为常规 POCO 属性,它会起作用(尽管 TwoWay 的另一端显然不会,除非我实现 INotifyPropertyChanged)。

我在这里做错了什么?这应该是一件非常简单的事情,但它让我头疼不已。

最佳答案

这是预期的行为。 CLR 属性只是底层 DependencyProperty 的包装。 . WPF 通常通过调用 GetValue 进行优化和 SetValue直接地。如果您需要执行自定义逻辑,请使用 DependencyProperty 的元数据。 .

关于wpf - WPF 中的自定义依赖属性和双向绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/803361/

相关文章:

Grails:如何以编程方式将命令对象数据绑定(bind)到服务中的域对象?

events - 如何在 Angularjs 中使用 $event 在事件点击时更新 ng-model

c# - 为什么我的 UserControl 绑定(bind)不起作用?

c# - C# 中的简单依赖属性和 UserControl 问题

.net - 从 validateValueCallback 抛出时会发生什么不好的事情吗?

c# - C# WebBrowser 对象中的 HTML/Javascript 文件本地加载未正确加载?

c# - 单击按钮调用异步方法

wpf - 如何停止每次打开的新窗口?

c# - 基于范围WPF的动画进度条前景颜色

c# - 使用依赖属性绑定(bind)图像源