C# 将DependencyProperty绑定到另一个类中的属性

C# 将DependencyProperty绑定到另一个类中的属性,c#,wpf,dependency-properties,C#,Wpf,Dependency Properties,在my MainWindow.xaml中,我已将UserControl添加到该窗口。还有一个按钮,用于将布尔值调用从True/False切换为Visible 在MainUserControl.xaml中,我有一个datagrid(不是MS grid),它的tempate指向App.xaml中设置的控件模板。这就是我的IsVisible属性所在的位置 在我的App.xaml中,我有一个ControlTemplate,其中包含我的datagrid。如果要将列的Visible属性绑定到MainUser

在my MainWindow.xaml中,我已将UserControl添加到该窗口。还有一个按钮,用于将布尔值调用从True/False切换为Visible

在MainUserControl.xaml中,我有一个datagrid(不是MS grid),它的tempate指向App.xaml中设置的控件模板。这就是我的IsVisible属性所在的位置

在我的App.xaml中,我有一个ControlTemplate,其中包含我的datagrid。如果要将列的Visible属性绑定到MainUserControl类中的IsVisible属性

我在约束财产方面遇到了麻烦。我尝试过使用TemplateBinding,但这不起作用,因为TemplatedParent不是UserControl。我尝试过使用RelativeSource和设置祖先,但也没有成功。有人有什么建议帮我吗

编辑: 这是我的ControlTemplate中的代码

<Column FieldName="Column1" 
             Title="Column1" 
             Visible="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:UserControl1}, AncestorLevel=2}, Path=IsVisible}"  />

问题在于您正在设置
antestorlevel=2
,请尝试删除它,它应该对您有用


antestorlevel=2
只有在您必须
UserControl1
s的情况下才允许此操作,一个在另一个内部,正如它所说,绑定到向上遍历时遇到的
local:UserControl1
的第二个实例。

问题是您正在设置
antestorlevel=2
,尝试删除它,它应该为你工作


AncestorLevel=2
只有在您必须
UserControl1
s的情况下才允许此操作,一个在另一个内部,正如它所说,绑定到向上遍历时遇到的
local:UserControl1
的第二个实例。

为什么不发布相关的XAML部分?这将有助于理解您的问题。为什么不发布相关的XAML部分?这将有助于理解您的问题。我删除了AncestorLevel=2,但仍然得到相同的绑定错误:System.Windows.Data错误:4:找不到引用为“RelativeSource FindAncestor,AncestorType='Project1.UserControl1',AncestorLevel='1'的绑定源。BindingExpression:Path=IsVisible;DataItem=null;目标元素为“列”(HashCode=8963119);目标属性为“可见”(类型为“布尔”)多亏了您,我重新调整了它。。无视我之前的评论!ThanksI删除了AncestorLevel=2,但仍然得到相同的绑定错误:System.Windows.Data错误:4:找不到引用为“RelativeSource FindAncestor,AncestorType='Project1.UserControl1',AncestorLevel='1'的绑定源。BindingExpression:Path=IsVisible;DataItem=null;目标元素为“列”(HashCode=8963119);目标属性为“可见”(类型为“布尔”)多亏了您,我重新调整了它。。无视我之前的评论!谢谢