我有一个WPF TabItem,有时存在ScrollBar,有时不存在。我试图找到一种方法来检测滚动条是否存在。
<TabItem HorizontalAlignment="Stretch" IsSelected="{Binding TabSelectedDoDads, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Stretch" >
<TabItem.Header>
<TextBlock Text="DoDads" FontWeight="SemiBold" />
</TabItem.Header>
<DockPanel VerticalAlignment="Stretch" >
<local:ucDoDadViewer x:Name="ucDoDadViewer" IsEnabled="{Binding IsDoDadViewerVisible, Converter={StaticResource bvc}}" />
</DockPanel>
</TabItem>
答案 0 :(得分:0)
这是对问题的回顾以及我最终做的基本组成部分:
UserControl有时会在右侧显示一个垂直滚动条,如果有,则UserControl宽度会缩小并导致单个选项卡标题行变为两行。用户不喜欢这种行为。因此,我需要确定是否存在垂直滚动条,以便我可以调整右边距以考虑滚动条。
UserControl在ScrollViewer中。 ScrollViewer有一个名为“ScrollChanged”的事件。滚动条状态发生变化时似乎会触发。
在EventHandler中,我有这个:
bool isVisible = false;
if (gridContentScrollViewer.ComputedVerticalScrollBarVisibility == Visibility.Visible)
{
isVisible = true;
}
Messenger.Default.Send<bool>(isVisible, "VerticalScrollInfoRecieved");
UserControl的VewModel正在侦听VerticalScrollInfoRecieved消息。当它到达时,它会更新一个保证金绑定,以说明ScrollBar是否可见。