我有一个基类和另一个继承自基类的类。 基类有一个DependencyProperty(比如“MyDPProperty”):
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));
在Window的构造函数中我写道:
SomeWpfWindow.DataContext = new ChildClass();
在我的Window的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 :(得分: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/