locked
属性已经注册,为什么仍然不支持绑定 RRS feed

  • 问题

  • public partial class Test : UserControl
        {
    public static readonly DependencyProperty TextProperty = DependencyProperty.Register("TestContent",                                            typeof(string),                                            typeof(Test),                                            null);         public string TestContent         {             get { return (string)GetValue(TextProperty); }             set { SetValue(TextProperty, value); }         }
    已注册属性TestContent,使用此方法绑定为空。<localConverter:Test TestContent="{Binding Item, Mode=TwoWay}"
    2012年1月12日 1:08

答案

  • UserControl Test 有一个属性 String TestContent ,在页面中使用此UserControl的时候,我希望通过绑定的方式<localConverter:Test x:Name="test1" TestContent="{Binding Item, Mode=TwoWay}" ,这边绑定的Item是一个String,同样的代码可以绑定到Label上,所以证明{Binding Item, Mode=TwoWay}是没有问题的,我目前使用test1.TestContent = “”赋值是可以的,但是绑定没有值

    代码是没有问题的,我就是这样做的,可以正常的绑定。你查下控件的DataContext, 看看是否正常设置了。


    你好,

    首先请问你说的绑定没有值是指 TestContent 属性没有值(请Debug查看一下,应该是有值的),还是说在UI上显示不了?

    如果是后者,那可能是你的的Test 控件没有在UI上对Testn属性进行显示。比如你可以这样:

    1. 对你的Test控件命名,如 x:Name="TestControl"

    2. 用一个TextBlock控件来显示 TestContent: <TextBlock Text="{Binding TestContent, ElementName=TestControl}"></TextBlock>

    最后要说的是你的代码中不需要以下代码: this.DataContext = this;

     


    Daoping Liu - MSFT
    2012年1月16日 3:44
    版主

全部回复

  • 你说的绑定为空指的是什么地方为空?

    你的数据源是什么?

    2012年1月12日 3:59
  • UserControl Test 有一个属性 String TestContent ,在页面中使用此UserControl的时候,我希望通过绑定的方式<localConverter:Test x:Name="test1" TestContent="{Binding Item, Mode=TwoWay}" ,这边绑定的Item是一个String,同样的代码可以绑定到Label上,所以证明{Binding Item, Mode=TwoWay}是没有问题的,我目前使用test1.TestContent = “”赋值是可以的,但是绑定没有值

    2012年1月12日 4:50
  • UserControl Test 有一个属性 String TestContent ,在页面中使用此UserControl的时候,我希望通过绑定的方式<localConverter:Test x:Name="test1" TestContent="{Binding Item, Mode=TwoWay}" ,这边绑定的Item是一个String,同样的代码可以绑定到Label上,所以证明{Binding Item, Mode=TwoWay}是没有问题的,我目前使用test1.TestContent = “”赋值是可以的,但是绑定没有值

    代码是没有问题的,我就是这样做的,可以正常的绑定。你查下控件的DataContext, 看看是否正常设置了。
    2012年1月12日 6:25
  • 我在UserControl上加了
      this.DataContext = this;
    
    那你能否把你的代码传给我一份到我邮箱呢?worldwf@163.com谢谢了
    2012年1月12日 6:33
  • 你试试这样,自己写一个类,比如这个类

    public class People

    {

        public string Item {get;set;}

    }

     

    然后在,UserControl里加一个People的实例 peopleInstance;

    this.DataContext = peopleInstance;

    试试可以工作么。

    2012年1月12日 6:48
  • UserControl Test 有一个属性 String TestContent ,在页面中使用此UserControl的时候,我希望通过绑定的方式<localConverter:Test x:Name="test1" TestContent="{Binding Item, Mode=TwoWay}" ,这边绑定的Item是一个String,同样的代码可以绑定到Label上,所以证明{Binding Item, Mode=TwoWay}是没有问题的,我目前使用test1.TestContent = “”赋值是可以的,但是绑定没有值

    代码是没有问题的,我就是这样做的,可以正常的绑定。你查下控件的DataContext, 看看是否正常设置了。


    你好,

    首先请问你说的绑定没有值是指 TestContent 属性没有值(请Debug查看一下,应该是有值的),还是说在UI上显示不了?

    如果是后者,那可能是你的的Test 控件没有在UI上对Testn属性进行显示。比如你可以这样:

    1. 对你的Test控件命名,如 x:Name="TestControl"

    2. 用一个TextBlock控件来显示 TestContent: <TextBlock Text="{Binding TestContent, ElementName=TestControl}"></TextBlock>

    最后要说的是你的代码中不需要以下代码: this.DataContext = this;

     


    Daoping Liu - MSFT
    2012年1月16日 3:44
    版主