2013-08-08 4 views
0

Im имея контроль над именем MyControl, который содержит коллекцию < MyClass> по имени MyClassesНевозможно связать свойство DependencyProperty класса, полученного из DependenyObject в WPF?

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

MyClass, который является производным от DependencyObject

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

Im имеет 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 и герметизирует Равно() и GetHashCode() методы
  2. DependencyObjects не помечены как сериализуемым
  3. DependencyObject имеет сродство нити - она ​​может быть доступна только на нити, на которой он был создано

Примечание: Это работает отлично в Silverlight

ответ

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; 
+0

Я тоже пробовал, но не удалось. –

+0

@JOYOYIESSREX вы можете показать, что вы пробовали – Vikram

+0

'private double myValue; общественности двойной MyValue { прибудете {вернуться MyValue} множество {MyValue = значение; RaisePropertyChanged ("MyValue");}} общественное событие PropertyChangedEventHandler PropertyChanged; общественного недействительными RaisePropertyChanged (строка ИмениСвойства) { если (PropertyChanged! = NULL) { PropertyChanged (это, новые PropertyChangedEventArgs (ИмениСвойства)); } } ' –

Смежные вопросы