有没有办法确定WPF TabItem是否存在ScrollBar?

时间:2017-12-26 18:06:42

标签: wpf

我有一个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>

1 个答案:

答案 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是否可见。