我的问题是DependencyProperties
中没有联系UserControl
。这不是问题。当我将UserControl
中的按钮绑定到名为UserControl
的{{1}} DependencyProperty
时,当我在{{1}上设置TargetCommand
时绑定会中断}}。我已尝试使用DataContext
,当然还有UserControl
,但它们仅在FindAncestor
上没有ElementName
时才会起作用。
有解决方法吗?
示例:
主窗口
DataContext
MyUserControl代码背后
UserControl
MyUserControl - Xaml
<Window xmlns:UserControls="clr-namespace:SomeNameSpace">
<Grid>
<UserControls:MyUserControl
TargetCommand="{Binding PathToCommand}"
DataContext="{Binding PathToSomeModel}" />
只要未在MainWindow中的MyUserControl上设置DataContext,MyUserControl中绑定的RelativeSource和ElementName方法都会正确连接。一旦设置了DataContext,它们都不起作用。
有没有办法在MyUserControl上设置DataContext,并且仍然保留DependencyProperty绑定到TargetCommand?
答案 0 :(得分:3)
您的PathToCommand
定义在哪里?如果我正确地阅读您的示例,它应该在VisualTree中比UserControl更高。在这种情况下,您将绑定到包含PathToCommand的DataContext并绑定到DataContext.PathToCommand
的任何控件
<Window xmlns:UserControls="clr-namespace:SomeNameSpace">
<Grid x:Name="PART_Root">
<UserControls:MyUserControl
TargetCommand="{Binding ElementName=PART_Root, Path=DataContext.PathToCommand}" />
答案 1 :(得分:0)
不确定我在这里是否遗漏了什么,但为什么在设置DataContext时需要DependencyProperty呢?为什么模型中没有可以直接从按钮绑定的属性?