是否在WPF应用程序中使用RelativeSource绑定(而不是ElementName)访问上一个同级元素?

zzzyeukh  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(189)

我正在尝试访问直接位于目标元素之前的兄弟元素的属性。这是我必须在我的应用程序中重复几次的东西,所以如果可能,我宁愿使用可重复的东西(而不是elementName)。
有什么想法吗?

<Groupbox x:Name="GB1">

  <Checkbox x:Name="CB1" IsChecked="True"/>

  <TextBlock>
    <Style TargetType="TextBlock">
      <Style.Triggers>

        <Data.Trigger Binding RelativeSource={??? (I want this to access the Checkbox CB1 above), Path=IsChecked}" Value="True>
            <Setter Property="*Do a Thing if IsChecked=True*" Value="..."/>

      </Style.Triggers>
    </Style>
  </TextBlock>
</Groupbox>
w46czmvw

w46czmvw1#

也许这个例子会给予你一个想法。

<StackPanel>
<TextBlock x:Name="textBlock1" Text="Text" />
<TextBlock x:Name="textBlock2" Text="Text">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Setter Property="Text" Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type StackPanel}}, Path=Children[0].Text}"/>
        </Style>
    </TextBlock.Style>
</TextBlock>
</StackPanel>

Path=Children[0].Text,它将查找此祖先的第一个子元素并访问其Text属性。

相关问题