Wpf 绑定到UserControl中的元素

Wpf 绑定到UserControl中的元素,wpf,xaml,binding,user-controls,actualwidth,Wpf,Xaml,Binding,User Controls,Actualwidth,假设我有一个如下所示的用户控件,我如何从控件外部将某些内容绑定到“G1”网格的实际宽度 <UserControl x:Class="Blah"> <WrapPanel> <Grid x:Name="G1"> ... </Grid> <Grid> ... </Grid> </WrapPanel> </UserControl> ... .

假设我有一个如下所示的用户控件,我如何从控件外部将某些内容绑定到“G1”网格的
实际宽度

<UserControl x:Class="Blah">
  <WrapPanel>
    <Grid x:Name="G1">
      ...
    </Grid>
    <Grid>
      ...
    </Grid>
  </WrapPanel>
</UserControl>

...
...

如果要绑定到使用此用户控件的外部控件,请在UserControl代码后面声明一个
DependencyProperty
,然后将G1绑定到该属性。 并将外部控件的属性绑定到UserControl的
DependencyProperty

它类似于2级间接寻址。

如果您是指控件之外的内容,而不是控件的内容,则可以在绑定中使用
ElementName
,如下所示:

{Binding ElementName=G1, Path=ActualWidth}
如果您的意思是在另一个Xaml文件中的控件之外,那么如果您的控件在另一个控件的范围内,则可以尝试使用Path属性:

{Binding ElementName=ParentControl, Path=G1.ActualWidth}

但是,我建议不要使用这种设计,因为有一天您可能会更改G1的名称,并且您永远不会知道任何绑定可能会中断。

您所说的“G1外部”是指来自同一个XAML文件还是来自代码隐藏?如果您在不同的XAML文件中使用控件,但实际宽度不会以这种方式绑定?相关问题:{Binding ElementName=ParentControl,Path=G1.ActualWidth}不起作用&该控件在范围内-我可以看到整个控件的实际宽度。