如何绑定到依赖对象的依赖属性?
How to bind to the dependency property of the dependency object?
以下只是问题核心的总结
我定义的 class 有一个依赖 属性 如下。
public class TestMap : DependencyObject
{
public bool TestProperty
{
get { return (bool)GetValue(TestPropertyProperty); }
set { SetValue(TestPropertyProperty, value); }
}
public static readonly DependencyProperty TestPropertyProperty =
DependencyProperty.Register("TestProperty", typeof(bool), typeof(TestMap), new PropertyMetadata(false));
}
现在我要在 UserControl 中使用上面的 class。
下面的代码就是一个例子。
public class UserControl1 : Control
{
public TestMap TestMap { get; set; }
}
然后我在 MainWindow 中使用了 UserControl1,如下所示。
<Window>
<Grid>
<local:UserControl1 />
</Grid>
</Window>
上面的代码运行良好,但是如果我尝试绑定到 TestMap.TestProperty 我应该怎么做?
我尝试了以下代码,但它不起作用。 (假设 ViewModel 已绑定)
<Window>
<Grid>
<local:UserControl1 TestMap.TestProperty="{Binding ViewModelProperty}"/>
</Grid>
</Window>
以上代码的错误信息如下图。
错误信息是
"It can't found connectable 'TestProperty' property in the 'TestMap' format."
感谢阅读。
您不能绑定到嵌套的 属性,即 属性 TestMap
返回的对象的 属性 TestProperty
,像这样在 XAML。不支持。
您应该将 TestProperty
移动到 UserControl
,以编程方式设置它,或者考虑使用可在任何特定类型的对象上设置的 attached dependency property。
以下只是问题核心的总结
我定义的 class 有一个依赖 属性 如下。
public class TestMap : DependencyObject
{
public bool TestProperty
{
get { return (bool)GetValue(TestPropertyProperty); }
set { SetValue(TestPropertyProperty, value); }
}
public static readonly DependencyProperty TestPropertyProperty =
DependencyProperty.Register("TestProperty", typeof(bool), typeof(TestMap), new PropertyMetadata(false));
}
现在我要在 UserControl 中使用上面的 class。 下面的代码就是一个例子。
public class UserControl1 : Control
{
public TestMap TestMap { get; set; }
}
然后我在 MainWindow 中使用了 UserControl1,如下所示。
<Window>
<Grid>
<local:UserControl1 />
</Grid>
</Window>
上面的代码运行良好,但是如果我尝试绑定到 TestMap.TestProperty 我应该怎么做? 我尝试了以下代码,但它不起作用。 (假设 ViewModel 已绑定)
<Window>
<Grid>
<local:UserControl1 TestMap.TestProperty="{Binding ViewModelProperty}"/>
</Grid>
</Window>
以上代码的错误信息如下图。
错误信息是 "It can't found connectable 'TestProperty' property in the 'TestMap' format."
感谢阅读。
您不能绑定到嵌套的 属性,即 属性 TestMap
返回的对象的 属性 TestProperty
,像这样在 XAML。不支持。
您应该将 TestProperty
移动到 UserControl
,以编程方式设置它,或者考虑使用可在任何特定类型的对象上设置的 attached dependency property。