如何在 WPF 中为滑块制作自定义字符串刻度标签
How to make custom string tick labels for a slider in WPF
我正在制作一个用户可以点击滑块的界面。我希望绑定的标签显示在它们的数字分数旁边。 100应该说完美。 75应该说很好。 50应该说平均。 25 应该说低于平均水平,0 应该说失败。 (见下文)我试过使用转换器,但它们失败了,我试过使用控件模板,但它们失败了。任何帮助,将不胜感激。谢谢。
--- 完美(达到 100 分)
|
|
- 非常好(75 分)
|
|
- 平均值(在 50 分处)
|
|
- 低于平均水平(25 分)
|
|
--- 失败(在 0 标记处)
当您对该线程的所有尝试都失败时:
https://social.msdn.microsoft.com/Forums/vstudio/en-US/8d64b2dc-4dfd-4b05-aa95-e24aaaed53af/i-want-to-add-lables-with-text-in-ticks-of-slider?forum=wpf
我有一个 快速而粗略的 解决方案:将滑块放在网格中,然后在下一行(对于水平滑块,垂直滑块为列)中放置足够的列(或行)对于垂直滑块)来保存你的标签,像这样:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Slider Grid.ColumnSpan="9" Minimum="0" Maximum="100" Ticks="0, 25, 50, 75, 100" IsSnapToTickEnabled="True" Margin="3" />
<Label Content="Failed" Grid.Row="1" Style="{StaticResource TickLabel}" />
<Label Content="Below average" Grid.Row="1" Grid.Column="2" Style="{StaticResource TickLabel}" />
<Label Content="Average" Grid.Row="1" Grid.Column="4" Style="{StaticResource TickLabel}" />
<Label Content="Above average" Grid.Row="1" Grid.Column="6" Style="{StaticResource TickLabel}" />
<Label Content="Perfect" Grid.Row="1" Grid.Column="8" Style="{StaticResource TickLabel}" />
</Grid>
对于标签样式:
<UserControl.Resources>
<Style TargetType="Label" x:Key="TickLabel">
<Style.Setters>
<Setter Property="LayoutTransform">
<Setter.Value>
<RotateTransform Angle="-90" />
</Setter.Value>
</Setter>
<Setter Property="Margin" Value="-3" />
<Setter Property="HorizontalContentAlignment" Value="Right" />
</Style.Setters>
</Style>
</UserControl.Resources>
如果您需要更多这些并且具有不同的标签/刻度位置,我将创建一个用户控件,其中标签内容(及其位置)作为 Dictionary<double, string>
给出,位置介于 0.0 之间和 1.0(滑块完整范围的百分比)。
我正在制作一个用户可以点击滑块的界面。我希望绑定的标签显示在它们的数字分数旁边。 100应该说完美。 75应该说很好。 50应该说平均。 25 应该说低于平均水平,0 应该说失败。 (见下文)我试过使用转换器,但它们失败了,我试过使用控件模板,但它们失败了。任何帮助,将不胜感激。谢谢。
--- 完美(达到 100 分)
|
|
- 非常好(75 分)
|
|
- 平均值(在 50 分处)
|
|
- 低于平均水平(25 分)
|
|
--- 失败(在 0 标记处)
当您对该线程的所有尝试都失败时:
https://social.msdn.microsoft.com/Forums/vstudio/en-US/8d64b2dc-4dfd-4b05-aa95-e24aaaed53af/i-want-to-add-lables-with-text-in-ticks-of-slider?forum=wpf
我有一个 快速而粗略的 解决方案:将滑块放在网格中,然后在下一行(对于水平滑块,垂直滑块为列)中放置足够的列(或行)对于垂直滑块)来保存你的标签,像这样:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Slider Grid.ColumnSpan="9" Minimum="0" Maximum="100" Ticks="0, 25, 50, 75, 100" IsSnapToTickEnabled="True" Margin="3" />
<Label Content="Failed" Grid.Row="1" Style="{StaticResource TickLabel}" />
<Label Content="Below average" Grid.Row="1" Grid.Column="2" Style="{StaticResource TickLabel}" />
<Label Content="Average" Grid.Row="1" Grid.Column="4" Style="{StaticResource TickLabel}" />
<Label Content="Above average" Grid.Row="1" Grid.Column="6" Style="{StaticResource TickLabel}" />
<Label Content="Perfect" Grid.Row="1" Grid.Column="8" Style="{StaticResource TickLabel}" />
</Grid>
对于标签样式:
<UserControl.Resources>
<Style TargetType="Label" x:Key="TickLabel">
<Style.Setters>
<Setter Property="LayoutTransform">
<Setter.Value>
<RotateTransform Angle="-90" />
</Setter.Value>
</Setter>
<Setter Property="Margin" Value="-3" />
<Setter Property="HorizontalContentAlignment" Value="Right" />
</Style.Setters>
</Style>
</UserControl.Resources>
如果您需要更多这些并且具有不同的标签/刻度位置,我将创建一个用户控件,其中标签内容(及其位置)作为 Dictionary<double, string>
给出,位置介于 0.0 之间和 1.0(滑块完整范围的百分比)。