-1

这似乎是一个简单的任务,我想从 MVVM 视图中传递一个公共属性值,但我不断收到“无法在类型的属性上设置‘绑定’。‘绑定’只能设置在依赖对象的依赖属性”错误。

我正在迭代一个可观察的集合并呈现该项目,并且我想将一些模板代码移动到一个用户控件中。我怎么能解决这个问题????

<local:xIPAddressControl UserControlIPAddressText="{Binding Path=IPAddress, RelativeSource={RelativeSource Mode=Self}, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

用户控制

public partial class xIPAddressControl : UserControl
{
    public xIPAddressControl()
    {
        this.InitializeComponent();
    }


    public string UserControlIPAddressText
    {
        get { return this.xIPAddressTextBlock.Text; }
        set { this.xIPAddressTextBlock.Text = value; }
    }
}
4

3 回答 3

1

如评论中所述,您的财产必须是 aDependencyProperty才能Binding在其上使用。

这是您的代码应如下所示:

        public static readonly DependencyProperty UserControlIPAddressTextProperty=
            DependencyProperty.Register("UserControlIPAddressText",
                                        typeof(string),
                                        typeof(xIPAddressControl));

       public string UserControlIPAddressText
       {
           get { return (string)GetValue(UserControlIPAddressTextProperty); }
           set { SetValue(UserControlIPAddressTextProperty, value); }
       }
于 2012-11-08T23:18:42.157 回答
1

您将 UserControlIPAddressText 定义为 CLR 属性,但它需要在依赖属性系统中注册。

DependencyProperty UserControlIPAddressTextProperty = DependencyProperty.Register("UserControlIPADdressText", typeof(string), null);
于 2012-11-08T16:59:15.217 回答
1

疯狂的事情,我试图错误地设置用户控件。它需要如下。

//this.DataContext = this;

LayoutRoot.DataContext = this;

教程在这里

于 2012-11-11T23:07:50.880 回答