2012-04-08 2 views
0

У меня есть базовый класс и другой класс, который наследуется от базы. Базовый класс имеет DependencyProperty (скажем, "MyDPProperty"):DataBinding не работает с унаследованным DependencyProperty

public int MyDPProperty 
{ 
    get { return (int)GetValue(MyDPPropertyProperty); } 
    set { SetValue(MyDPPropertyProperty, value); } 
} 
public static readonly DependencyProperty MyDPPropertyProperty =DependencyProperty.Register("MyDPProperty", typeof(int), typeof(ownerclass), new UIPropertyMetadata(0)); 

в конструкторе окна я писал:

SomeWpfWindow.DataContext = new ChildClass(); 

и в коде XAML моего окна я есть:

<TextBox x:Name="txt" 
     Text="{Binding Path=MyDPProperty, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" /> 

Теперь привязка не работает, хотя, когда я привязываю ее в коде позади, она работает:

SomeWpfWindow.txt.SetBinding(TextBox.TextProperty 
         , new Binding("MyDPProperty") 
         { 
          Source = InstanceOfChildClass, 
          UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged, 
          Mode = BindingMode.TwoWay 
         }); 
+0

Вы можете разместить определение свойства DP? –

+0

Не публикуйте это в комментарии. _Edit_ вопрос. –

+0

Аналогичная проблема здесь: http://stackoverflow.com/questions/6071086/wpf-how-can-i-make-uielement-support-binding –

ответ

0

Вы связываете свойство в коде позади. Вы можете дать свое окно имя (например, Name = «winName») и определить ELEMENTNAME в связывании:

x:Name="txt" Text="{Binding ElementName=winName, Path=MyDPProperty, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" /> 

есть и другие способы, например, вы можете добавить StaticResource. эта ссылка может помочь:

http://blog.jayway.com/2011/05/17/bind-from-xaml-to-property-defined-in-code-behind/

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