Ich erstelle meine eigene Slider-Vorlage und Stil. Es ähnelt dem grundlegenden Schieberegler, aber die Spurleiste enthält Kreise (Ellipsen) mit einer richtigen Trennung. Die Anzahl der Kreise in der Leiste sollte so sein, dass der Schieberegler genau über ihnen hält.WPF Variable Anzahl der Elemente
In einer schnellen Annäherung sollte Slider.Maximum - Slider.Minimum/StepSize Ellipsen im Steuerelement sein. Aber meines Wissens gibt es keine Möglichkeit, eine variable Anzahl von irgendetwas von XAML anzugeben, oder?
Dies ist in der Zusammenfassung, der Code, was bedeutet ich wollen würde erreichen:
<ControlTemplate x:Key="SliderHorizontal" TargetType="{x:Type Slider}">
<Grid Height="4">
<Border x:Name="TrackBackground">
<Rectangle x:Name="PART_SelectionRange" Fill="{StaticResource SliderThumb.Track.BackgroundSelected}"
HorizontalAlignment="Left" Margin="0 0 16 0" Visibility="Hidden"/>
</Border>
<Grid>
<!-- Have a variable ammount of column definitions and ellipses -->
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4"/>
<ColumnDefinition Width="*"/>
...
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="4"/>
</Grid.ColumnDefinitions>
<Ellipse Grid.Column="0" Fill="White"/>
...
<Ellipse Grid.Column="X" Fill="White"/>
</Grid>
<Track x:Name="PART_Track">
<Track.Thumb>
...
</Track.Thumb>
</Track>
</Grid>
<ControlTemplate.Triggers>
...
</ControlTemplate.Triggers>
</ControlTemplate>
Mein Code so weit erlaubt es mir, eine feste ammount von Ellipsen zu verwenden, die sehr schlecht aussieht, wenn es doesn Passen Sie nicht die Werte an, die von einem Schieberegler dargestellt werden.
Ich bin neu bei WPF, also weiß ich nicht, was dies aus Code-Behind tun würde. Kann ich einfach eine Klasse erstellen, die von Slider erbt und die Ellipsen dort hinzufügt? Wenn ja, könnte ich ein einfaches Beispiel dafür bekommen?
Dies bezieht sich nicht direkt auf Ihre Frage, aber wenn Sie WPF sind, sollten Sie sich mit dem Muster MVVM einige Tutorials angeboten werden. WPF wird wesentlich einfacher damit zu arbeiten sein, und Sie werden sich später dafür bedanken, dass Sie es früh gelernt haben. –