ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Avalonia使用代码更改滑动条的颜色

2026/8/6 5:10:42 拓冰建站 浏览量
Avalonia使用代码更改滑动条的颜色

由于使用Style更改滑动条样式没生效,遂通过c#代码通过逻辑树获取元素的方式来进行样式修改,以此博客记录。注意点就是目标元素的生成和渲染时间。

AttachedToVisualTree事件在控件​​被添加到视觉树时触发​​,然而,对于ScrollViewer这类复杂控件,其内部结构(即控件模板)的构建是​​异步的​​。当MyDeviceDetailView的AttachedToVisualTree触发时,ScrollViewer自身的模板可能还未实例化,其内部的PART_Frame自然还不存在。

  public MyDeviceDetailView(){InitializeComponent();AttachedToVisualTree += (sender, e) =>{var scrollViewer = this.FindControl<ScrollViewer>("Viewer");if (scrollViewer != null){// 监听ScrollViewer自身的附加事件scrollViewer.AttachedToVisualTree += (s, e) =>{Dispatcher.UIThread.Post(() =>{// 在此处查找PART_Framevar targetBorder = scrollViewer.GetVisualDescendants().OfType<Border>().FirstOrDefault(x => x.Name == "PART_Frame");if (targetBorder != null){targetBorder.Background = new SolidColorBrush(Color.Parse("#eb5a10"));}}, DispatcherPriority.Loaded);};}};}