Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何根据滑块刻度自定义具有不同颜色边框的滑块?_C#_Wpf_Xaml_Slider_Styles - Fatal编程技术网

C# 如何根据滑块刻度自定义具有不同颜色边框的滑块?

C# 如何根据滑块刻度自定义具有不同颜色边框的滑块?,c#,wpf,xaml,slider,styles,C#,Wpf,Xaml,Slider,Styles,我必须创建一个具有特定给定刻度值的滑块(例如100304605,…)。我想以这样一种方式设置滑块的样式,例如,从0到100,条形图有一种颜色,从100到304,有一种不同的颜色,等等 以下是我希望实现的目标的示例 以下是我的.xaml代码: <Slider Style="{StaticResource MyCustomStyleForSlider}" //the style to be applied Name="MyTimeSlider" Width="130" Minimum="

我必须创建一个具有特定给定刻度值的滑块(例如100304605,…)。我想以这样一种方式设置滑块的样式,例如,从0到100,条形图有一种颜色,从100到304,有一种不同的颜色,等等

以下是我希望实现的目标的示例

以下是我的.xaml代码:

<Slider Style="{StaticResource MyCustomStyleForSlider}" //the style to be applied
Name="MyTimeSlider" 
Width="130" 
Minimum="0" 
Maximum="{Binding MaxTimeFrames}" 
Value="{Binding TimeFrame}" 
TickPlacement="BottomRight" 
TickFrequency="1" 
IsMoveToPointEnabled="True" 
Margin="1,4,1,1" 
VerticalAlignment="Center" 
HorizontalAlignment="Center"/>


将子类化
滑块
,并添加一个提供要使用的颜色或笔刷列表的依赖项属性。在类中,每当
Ticks
属性(提供分隔区域的Ticks列表)更改时,我将重新计算
背景的
线性梯度。要进行硬剪切,请在与上一个渐变停止相同的偏移处添加不同的颜色,这应该相当简单。

如果您只想覆盖常规滑块模板,它相当长,但下面是一个示例:(代码到长,粘贴到这里)


要更改背景焦点,请单击
x:Key=“HorizontalSliderTrackNormalBackground”
。我已经让它显示了几种不同的颜色。

自定义控件是更好的选择。您将需要新的依赖属性来指定范围(值和颜色)和一些逻辑来绘制该范围。这可能不适合xaml(读取-您将需要代码隐藏)。