WPF:如何绑定到另一个控件&x27;s儿童';s的子属性

WPF:如何绑定到另一个控件&x27;s儿童';s的子属性,wpf,xaml,Wpf,Xaml,问题: 网格中有两个独立的对象:一个TextBox和一个TextBlock 当文本框的垂直滚动条可见时,我希望文本块可见 更新:垂直滚动条可见性应设置为自动,因此它是我们要触发的实际可见性(见下文)。 方法: 文本框的模板似乎包含一个名为PART_InnerGrid的网格,而该网格又包含一个名为PART_ContentHost的scrollviewer。此scrollviewer包含一个名为ComputedVerticalScrollBarVisibility的属性,该属性的类型为Visibil

问题: 网格中有两个独立的对象:一个TextBox和一个TextBlock 当文本框的垂直滚动条可见时,我希望文本块可见

更新:垂直滚动条可见性应设置为自动,因此它是我们要触发的实际可见性(见下文)。

方法: 文本框的模板似乎包含一个名为PART_InnerGrid的网格,而该网格又包含一个名为PART_ContentHost的scrollviewer。此scrollviewer包含一个名为ComputedVerticalScrollBarVisibility的属性,该属性的类型为Visibility。 我尝试在TextBlock上创建触发器,但无法构造正确的绑定路径。我将如何做到这一点:

<TextBox x:Name="TB1" TextWrapping="Wrap" AcceptsReturn="True" MinHeight="40"  VerticalScrollBarVisibility="Auto"/>

<TextBlock Text="VISIBLE" Grid.Row="1" VerticalAlignment="Bottom">
    <TextBlock.Style>
        <Style TargetType="TextBlock">
            <Setter Property="Visibility" Value="Collapsed"/>
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=TB1, Path=(PART_InnerGrid).(PART_ContentHost).ComputedVerticalScrollBarVisibility}">
                    <DataTrigger.Setters>
                        <Setter Property="Visibility" Value="Visible"/>
                    </DataTrigger.Setters>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBlock.Style>
</TextBlock>

您可以将它们的可见性都绑定到布尔属性,并使用转换器将布尔值转换为可见性值

它们的可见性如下所示:

Visibility="{Binding YourBoolProperty, Converter={StaticResource Converters_BoolToVisConverter}}"


谢谢您的回复。如果我一开始不需要将滚动条的可见性设置为自动,那就可以了。谢谢你的回复。如果我一开始不需要将滚动条的可见性设置为“自动”,那就可以了。
 <StackPanel>
    <TextBox Text="text" Width="50" VerticalScrollBarVisibility="Hidden" x:Name="TextBox"/>
    <TextBlock Text="ScrollViewer visible">
        <TextBlock.Style>
            <Style TargetType="TextBlock">
                <Setter Property="Visibility" Value="Collapsed"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=TextBox, Path=VerticalScrollBarVisibility}" Value="Visible">
                        <Setter Property="Visibility" Value="Visible"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBlock.Style>
    </TextBlock>
</StackPanel>