我有一个文本框,其verticalscrollbarvisibility设置为auto。我想做一个测试,以确定滚动条在运行时是否实际可见。我试过这句话:
if(textbox1.VerticalScrollBarVisibility == ScrollBarVisibility.Visible)
但它不起作用。有什么想法吗?
答案 0 :(得分:0)
首先将以下扩展方法放在静态类中(将类放在与代码的其余部分相同的命名空间中,或者放在代码文件中包含using
语句的命名空间中: -
public static IEnumerable<DependencyObject> Descendents(this DependencyObject root)
{
int count = VisualTreeHelper.GetChildrenCount(root);
for (int i = 0; i < count; i++)
{
var child = VisualTreeHelper.GetChild(root, i);
yield return child;
foreach (var descendent in Descendents(child))
yield return descendent;
}
}
使用此扩展方法,您可以在文本框内挖出ScrollViewer,该文本框负责滚动条并测试其ComputedVerticalScrollBarVisibility
。
if (textbox1.Descendents().OfType<ScrollViewer>()
.FirstOfDefault().ComputedVerticalScrollBarVisibility == Visibility.Visible)