方法:当UserControl有DataContext时,绑定到UserControl的DependencyProperty?

时间:2011-02-17 14:20:08

标签: c# wpf xaml datacontext dependency-properties

我的问题是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?

2 个答案:

答案 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呢?为什么模型中没有可以直接从按钮绑定的属性?