0

我一直在为我的 C# WPF 项目开发合适的滑块。

我想通过为滑块上的每个部分添加不同的颜色来创建一个滑块,其背景表示过程的不同部分。此外,我想在背景中添加小指标(如默认刻度,但自定义形状和不规则位置)。

我通过创建画笔并添加相应颜色的矩形来实现这一点。这似乎工作正常,但仍然存在小的失真,所以我进一步调查并意识到以下几点:

使用 slider.ActualWidth 我得到了整个小部件的宽度。因此,为了创建覆盖实际“滑块”部分的背景,我必须知道小部件到实际滑块的距离。(见图)

在此处输入图像描述

我在一个非常小的窗口中测量了距离,全屏并在两个屏幕上拉伸。看来这个距离总是5像素。我尝试了谷歌并查看了 WPF 在其页面上提供的信息,但要么我阅读了它,要么没有关于此的信息。

我可以确定这个距离总是 5 像素吗?这些信息保存在什么地方?是否有另一种方法来确定滑块本身的大小?

4

1 回答 1

0

假设您没有修改 Slider 模板,您可以沿着可视化树向下走并检查轨道的 ActualWidth:

Border b = VisualTreeHelper.GetChild(slider, 0) as Border;
Grid g = VisualTreeHelper.GetChild(b, 0) as Grid;
Border track = VisualTreeHelper.GetChild(g, 2) as Border;
Console.WriteLine("Track ActualWidth: " + track.ActualWidth);
于 2015-01-21T13:42:24.190 回答