【问题标题】:Binding to an element within a UserControl绑定到 UserControl 中的元素
【发布时间】:2010-09-23 09:18:14
【问题描述】:

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

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

【问题讨论】:

  • “G1 之外”是什么意思 - 来自同一个 XAML 文件还是来自代码隐藏?
  • 如果您在不同的 XAML 文件中使用该控件

标签: wpf xaml binding user-controls actualwidth


【解决方案1】:

如果你的意思是在控件之外,而不是作为控件的内容,你可以像这样在 Binding 中使用ElementName

{Binding ElementName=G1, Path=ActualWidth}

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

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

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

【讨论】:

  • {Binding ElementName=ParentControl, Path=G1.ActualWidth} 不起作用且控件在范围内 - 我可以看到整个控件的实际宽度。
【解决方案2】:

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多