【问题标题】:silverlight textbox scrollbarvisibilitysilverlight 文本框滚动条可见性
【发布时间】:2009-12-01 04:16:56
【问题描述】:

我有一个将verticalscrollbarvisibility 设置为auto 的文本框。我想做一个测试,看看滚动条在运行时是否真的可见。我试过了:

if (textbox1.VerticalScrollBarVisibility == ScrollBarVisibility.Visible)

但它不起作用。有什么想法吗?

【问题讨论】:

    标签: silverlight silverlight-3.0


    【解决方案1】:

    首先将以下扩展方法放在静态类中(或者将该类放在与代码的其余部分相同的命名空间中,或者放在代码文件中 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)
    

    【讨论】:

    • 嗨 Anthony,我想我可能遗漏了一些东西。当我尝试实现此功能时出现以下错误:1.)'System.Windows.Controls.ScrollViewer' 是一个'类型',但用作变量 2.) 方法'OfType' 没有重载需要'1' 参数
    • 哎呀其实都是同一个问题,OfType的语法打错了,答案调整了
    猜你喜欢
    • 1970-01-01
    • 2011-06-02
    • 1970-01-01
    • 2011-10-03
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多