текстовое поле прокрутки silverlight видимость - PullRequest
2 голосов
/ 01 декабря 2009

У меня есть текстовое поле с вертикальной полосой прокрутки видимости, установленной на авто. Я хотел бы сделать тест, чтобы выяснить, действительно ли полоса прокрутки видна во время выполнения. Я попробовал утверждение:

if (textbox1.VerticalScrollBarVisibility == ScrollBarVisibility.Visible)

но это не работает. Есть идеи?

1 Ответ

0 голосов
/ 01 декабря 2009

Сначала поместите следующий метод расширения в статический класс (либо поместите класс в то же пространство имен, что и остальная часть вашего кода, либо в пространство имен, включенное в оператор 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)
...