Как обновить tickbar слайдера в WPF?
я пытался обновить тикбар слайдера, но не мог часто обновлять его ..он работает только один раз .он не отражает измененные значения в следующий раз .но значения передавались, но drawingcontext не был переопределен.
этот приведенный ниже код работает только один раз .
он ударил во второй раз, но значения не были chnaged .
Что я уже пробовал:
это xaml--> слайдер
<pre><Slider Height="27" x:Name="slider" TickPlacement="TopLeft" Margin="5,0,0,0" IsMoveToPointEnabled="True" Width="458" Template="{DynamicResource Slider}" Style="{DynamicResource Horizontal_Slider}">
это мой стиль слайдера
<wrbitmap:CustomTickBar x:Name="TopCustomTicker" Fill="{TemplateBinding Foreground}" Height="3" Margin="0,-15,0,0" Placement="Top" Grid.Row="0" Visibility="Visible"></wrbitmap:CustomTickBar> <TickBar x:Name="BottomTick" Fill="White" SnapsToDevicePixels="True" Grid.Row="2" Placement="Top" Height="4" Margin="0,-35,0,0" Visibility="Visible" />
с фоновым кодом
<pre> public class CustomTickBar : TickBar { DrawingGroup backingStore = new DrawingGroup(); DrawingVisual drawingVisual = new DrawingVisual(); //i was calling this method from other class so that i want to update new values public void ResetTimes(long ImageStartTime, double TickFrequency) { this.StartPlayerTime = ImageStartTime; var drawingContext = backingStore.Open(); // var drawingContext = drawingVisual.RenderOpen(); OnRender(drawingContext); this.InvalidateVisual(); drawingContext.Close(); //CustomTickBar ticker =Application.Current.FindResource TopCustomTicker } public static double Tickfrequency; public long StartPlayerTime; protected override void OnRender(System.Windows.Media.DrawingContext dc) { double num = this.Maximum - this.Minimum; double y = this.ReservedSpace * 0.5; FormattedText formattedText = null; double x = 0; // TickFrequency for (double i = 0; i <= num; i += this.TickFrequency) { var time = TimeSpan.FromSeconds(StartPlayerTime); var ti = TimeSpan.FromSeconds(i); double t = (time + ti).TotalSeconds; var T = TimeSpan.FromSeconds(t); var TIME = T.Hours + ":" + T.Minutes; formattedText = new FormattedText(TIME.ToString(), CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface("Verdana"), 8, Brushes.White); //if (this.Minimum == i) // x = 0; //else x += this.ActualWidth / (num / this.TickFrequency); dc.DrawText(formattedText, new Point(x - 80, y)); } }