Creo que la mejor manera de hacerlo es crear un control TickBar personalizado y anular la representación de los tics. Aquí está una manera:
public class NumberedTickBar : TickBar
{
protected override void OnRender(DrawingContext dc)
{
Size size = new Size(base.ActualWidth,base.ActualHeight);
int tickCount = (int)((this.Maximum - this.Minimum)/this.TickFrequency) + 1;
if((this.Maximum - this.Minimum) % this.TickFrequency == 0)
tickCount -= 1;
Double tickFrequencySize;
// Calculate tick's setting
tickFrequencySize = (size.Width * this.TickFrequency/(this.Maximum - this.Minimum));
string text = "";
FormattedText formattedText = null;
double num = this.Maximum - this.Minimum;
int i = 0;
// Draw each tick text
for(i = 0;i <= tickCount;i++)
{
text = Convert.ToString(Convert.ToInt32(this.Minimum + this.TickFrequency * i),10);
formattedText = new FormattedText(text,CultureInfo.GetCultureInfo("en-us"),FlowDirection.LeftToRight,new Typeface("Verdana"),8,Brushes.Black);
dc.DrawText(formattedText,new Point((tickFrequencySize * i),30));
}
}
}
A continuación, tendrá que crear un estilo personalizado para su control deslizante que utiliza su nueva Tickbar en lugar de la tickbar defecto.
Si no está seguro de cómo crear un estilo para un control deslizante puede comenzar con el ejemplo de Windows here. Es muy sofisticado.
Luego, lo único que queda por hacer es reemplazar Top Tickbar por uno nuevo personalizado. Básicamente Cambio:
<TickBar Name="TopTick" SnapsToDevicePixels="True" Placement="Top" Fill="{StaticResource GlyphBrush}" Height="4" Visibility="Collapsed" />
a esto:
<local:NumberedTickBar Name="TopTick" Margin="5,0,10,0" SnapsToDevicePixels="True" Grid.Row="0" Fill="{TemplateBinding Foreground}" Placement="Top" Height="4" Visibility="Collapsed"/>
El margen es importante, ya que se asegurará de que su texto está en el lugar correcto.
Su control deslizante estará en la parte superior con marcas justo debajo. Una fila de texto se mostrará debajo de los ticks.
¿Quieres una respuesta que funcione en Silverlight? Es mejor si eres explícito acerca de dónde esto realmente necesita funcionar. – AnthonyWJones
Hola, Anthony, lo necesito para un proyecto de WPF que se trasladará a Silverlight el próximo año, así que no estoy particularmente molesto si recibo una solución de WPF o Silverlight. Dadas las similitudes entre los dos, espero ser capaz de adaptar cualquier sugerencia de cualquier manera. Mitch – Mitch