【发布时间】:2009-12-01 04:16:56
【问题描述】:
我有一个将verticalscrollbarvisibility 设置为auto 的文本框。我想做一个测试,看看滚动条在运行时是否真的可见。我试过了:
if (textbox1.VerticalScrollBarVisibility == ScrollBarVisibility.Visible)
但它不起作用。有什么想法吗?
【问题讨论】:
标签: silverlight silverlight-3.0
我有一个将verticalscrollbarvisibility 设置为auto 的文本框。我想做一个测试,看看滚动条在运行时是否真的可见。我试过了:
if (textbox1.VerticalScrollBarVisibility == ScrollBarVisibility.Visible)
但它不起作用。有什么想法吗?
【问题讨论】:
标签: silverlight silverlight-3.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)
【讨论】: