无法绑定从WPF中的DependenyObject派生的类的DependencyProperty?

时间:2013-08-08 07:07:55

标签: c# wpf silverlight-4.0 dependency-properties

我有一个名为 MyControl 的控件,其中包含一个集合< MyClass >命名为 MyClasses

   <MyControl>
      <MyClasses>
         <MyClasss Value={Binding} />
      </MyClasses>
  </MyControl>
来自MyClass

DependencyObject

        Public Class MyClass : DependencyObject,INotifyPropertyChanged
        {
            Value  //propdp (DependencyProperty) 
        }

我有DataTable。我需要将表[0] [0]中的数据与 MyClass 的值属性绑定

        Binding valuebinding = new Binding();
        valuebinding.Path = new PropertyPath("ItemArray[0]");
        valuebinding.Source = Table.Rows[0];
        valuebinding.Mode = BindingMode.TwoWay;
        BindingOperations.SetBinding(myValue, MyClass.ValueProperty, valuebinding);
        BindingOperations.SetBinding(textBlock, TextBlock.TextProperty, valuebinding);

现在我需要动态更改数据表中存在的数据的值吗? 它有问题吗?该解决方案是否与以下原因有关?

  1. DependencyObject类重写并密封Equals()和GetHashCode()方法
  2. DependencyObjects未标记为可序列化
  3. DependencyObject具有线程关联性 - 只能在创建它的线程上访问它
  4. 注意:它在Silverlight中运行良好

1 个答案:

答案 0 :(得分:0)

你最好能做一件事。使用您将从dataTable对象设置的属性创建一个类,从INotifyPropertyChanged派生该类,并从控件绑定此类的属性。一个小代码片段如下所示

class MyCodeSnippet:INOtifyPropertyChanged
{
   public object MyProperty {
     get; 
     set
      {
        //Register for Notification
      }
    }

   //Implement all the INotifyPropertyChanged function
}


valuebinding.Path = new PropertyPath("MYProperty");
valuebinding.Source = MyClass;