0

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

   <MyControl>
      <MyClasses>
         <MyClasss Value={Binding} />
      </MyClasses>
  </MyControl>

MyClass源自DependencyObject

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

我有一个DataTable. 我需要将 table[0][0] 中的数据与MyClass的 Value 属性绑定

        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 具有线程亲和性——它只能在创建它的线程上访问

注意:它在 Silverlight 中运行良好

4

1 回答 1

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;
于 2013-08-08T07:25:34.597 回答