wpf - 如何访问 WPF 中 ComboBox 内的 ScrollViewer?

标签 wpf

ComboBox 控件模板有一个 ScrollViewer。如何从 ComboBox 的实例获取对它的引用?

我尝试将其命名为“ScrollViwer1”并使用它,但没有成功。

var scroll = FindVisualChildByName<ScrollViewer>(this.comboBox, "ScrollViewer1");



  public static T FindVisualChildByName<T>(DependencyObject parent, string name) where T : DependencyObject
        {
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
            {
                var child = VisualTreeHelper.GetChild(parent, i);
                string controlName = child.GetValue(Control.NameProperty) as string;
                if (controlName == name)
                {
                    return child as T;
                }
                else
                {
                    T result = FindVisualChildByName<T>(child, name);
                    if (result != null)
                        return result;
                }
            }
            return null;
        }

最佳答案

您可以使用FrameworkTemplate.FindName Method .

ScrollViewer sv = comboBox.Template.FindName("DropDownScrollViewer", comboBox) as ScrollViewer;
if (sv != null)
{
    // do something...
}

关于wpf - 如何访问 WPF 中 ComboBox 内的 ScrollViewer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15442614/

相关文章:

c# - 无法在 WPF 中使用 IMultiValueConverter 以允许公制或英制输入

c# - WPF:将 ListBox ContextMenu 的命令参数绑定(bind)到 ListBox 的选定项

c# - 将 PDF 转换为固定文档

wpf - 修改 TabControl 的标题

C# WPF 绑定(bind)不从 Property 获取数据

WPF 边框厚度仅底部..

c# - 无法将类型为 'MS.Internal.NamedObject' 的对象转换为 BitmapImage

c# - 必须声明标量变量 "@OTitle@FirstName"

c# - ListView 项目不清除 (C#/WPF)

c# - 未应用数据模板