WPF - 在滑块上工作时,偏移量是在任何地方定义的吗?
WPF - Is the offset, when working on a slider, defined anywhere?
我一直在为我的 C# WPF 项目开发合适的滑块。
我想通过为滑块上的每个部分添加不同的颜色来创建一个滑块,其背景指示流程的不同部分。此外,我想在背景中添加小指示器(如默认刻度,但自定义形状和不规则位置)。
我通过创建画笔并添加相应颜色的矩形来实现这一点。这似乎工作正常,但仍然存在小失真,所以我进一步调查并意识到以下几点:
使用 slider.ActualWidth 我得到了整个小部件的宽度。因此,为了创建覆盖实际 "slider" 部分的背景,我必须注意从小部件到实际滑块的距离。 (见图)
我在一个非常小的 window 中测量了距离,在全屏和两个屏幕上拉伸。看起来这个距离总是 5 个像素。我尝试了 google 并查看了 WPF 在其页面上提供的信息,但要么我仔细阅读了它,要么没有这方面的信息。
我能确定这个距离总是 5 个像素吗?这些信息保存在什么地方?是否有另一种方法来确定滑块本身的大小?
假设您没有修改 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);
我一直在为我的 C# WPF 项目开发合适的滑块。
我想通过为滑块上的每个部分添加不同的颜色来创建一个滑块,其背景指示流程的不同部分。此外,我想在背景中添加小指示器(如默认刻度,但自定义形状和不规则位置)。
我通过创建画笔并添加相应颜色的矩形来实现这一点。这似乎工作正常,但仍然存在小失真,所以我进一步调查并意识到以下几点:
使用 slider.ActualWidth 我得到了整个小部件的宽度。因此,为了创建覆盖实际 "slider" 部分的背景,我必须注意从小部件到实际滑块的距离。 (见图)
我在一个非常小的 window 中测量了距离,在全屏和两个屏幕上拉伸。看起来这个距离总是 5 个像素。我尝试了 google 并查看了 WPF 在其页面上提供的信息,但要么我仔细阅读了它,要么没有这方面的信息。
我能确定这个距离总是 5 个像素吗?这些信息保存在什么地方?是否有另一种方法来确定滑块本身的大小?
假设您没有修改 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);