DataTrigger绑定到另一个名称空间中的ToggleButton

时间:2014-11-04 19:19:36

标签: wpf xaml

我尝试访问一个单独的UserControl中的ToggleButton来触发DockPanel.Style DataTrigger。

当ToggleButton和DockPanel都在同一名称空间中时,我的工作原理如下:

<ToggleButton x:Name="OneToggleButton"
          Content="Click me..." />

<DockPanel>
  <DockPanel.Style>
    <Style>
      <Setter Property="UIElement.Visibility" 
              Value="Visible"/>
      <Style.Triggers>
        <DataTrigger Binding="{Binding IsChecked, 
                     ElementName=DetailsBookToggleButton}" 
                     Value="False">
          <Setter Property="UIElement.Visibility" 
                  Value="Collapsed"/>
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </DockPanel.Style>

  <TextBlock DockPanel.Dock="Top" Text="..." />

</DockPanel>

但是现在当我将ToggleButton移动到另一个文件(其他命名空间)时,它不再起作用了。 ElementName(据我所知)仅适用于同一文件中的元素。 那么如何在另一个文件中管理对我的ToggleButton的IsChecked的绑定?

有人有建议吗?会很棒:))

1 个答案:

答案 0 :(得分:0)

仅供参考,您要查找的术语是“名称范围”,并且无法引用另一个名称范围中定义的元素。可以说,不应该允许这样做。

不要将一个UI元素绑定到另一个UI元素,而是考虑将它们绑定到公共属性,可以在视图模型中,在一些常见的祖先元素上,也可以通过依赖属性继承。