问题: 我在网格中有两个单独的对象:TextBox和TextBlock 我希望TextBox的垂直滚动条可见时可以看到TextBlock。
更新:垂直滚动条可见性应设置为自动,因此它是我们想要触发的实际可见性(见下文)。
方法: TextBox的模板似乎包含一个名为PART_InnerGrid的Grid,后者又包含一个名为PART_ContentHost的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>
答案 0 :(得分:0)
您可以将它们的可见性绑定到布尔属性,并使用Converter将布尔值转换为可见性值。
他们的知名度如下:
Visibility="{Binding YourBoolProperty, Converter={StaticResource Converters_BoolToVisConverter}}"
答案 1 :(得分:0)
<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>