Ich glaube, der beste Weg, dies zu tun ist, ein benutzerdefiniertes TickBar-Steuerelement zu erstellen und überschreiben das Rendern der Ticks. Hier ist eine Möglichkeit:
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));
}
}
}
Dann werden Sie haben einen benutzerdefinierten Stil für Ihren Schieber zu schaffen, die Ihre neue Tickbar anstelle der Standard-Tickbar verwendet.
Wenn Sie nicht sicher sind, wie Sie einen Stil für einen Schieberegler erstellen, können Sie mit dem Windows-Beispiel beginnen here. Es ist ein sehr anspruchsvoller.
Dann müssen Sie nur noch die obere Tickbar durch Ihre neue benutzerdefinierte ersetzen. Grundsätzlich ändern:
<TickBar Name="TopTick" SnapsToDevicePixels="True" Placement="Top" Fill="{StaticResource GlyphBrush}" Height="4" Visibility="Collapsed" />
dazu:
<local:NumberedTickBar Name="TopTick" Margin="5,0,10,0" SnapsToDevicePixels="True" Grid.Row="0" Fill="{TemplateBinding Foreground}" Placement="Top" Height="4" Visibility="Collapsed"/>
Die Marge ist wichtig, denn das wird dafür sorgen, dass Ihr Text an der richtigen Stelle ist.
Ihr Schieberegler wird auf der Oberseite mit Zecken direkt darunter sein. Eine Zeile Text wird unter den Ticks angezeigt.
Möchten Sie eine Antwort, die in Silverlight funktioniert? Es ist am besten, wenn Sie explizit angeben, wo dies eigentlich funktionieren soll. – AnthonyWJones
Hallo Anthony, ich brauche es für ein WPF-Projekt, das nächstes Jahr auf Silverlight portiert wird, also bin ich nicht besonders beunruhigt, ob ich eine WPF- oder Silverlight-Lösung bekomme. In Anbetracht der Ähnlichkeiten zwischen den beiden würde ich hoffen, in der Lage zu sein, irgendwelche Vorschläge in jeder Hinsicht anzupassen. Mitch – Mitch