Wpf 将值记号添加到我的圆形滑块中

Wpf 将值记号添加到我的圆形滑块中,wpf,slider,Wpf,Slider,这是我的圆形滑块: <Slider Name="knobSlider" Minimum="0" Maximum="50" Value="1" Height="99" Width="75" HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="1"> <Slider.Template> <ControlTemplate>

这是我的
圆形滑块

<Slider Name="knobSlider" Minimum="0" Maximum="50" Value="1" Height="99" Width="75"
        HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="1">
    <Slider.Template>
        <ControlTemplate>
            <Viewbox>
                <Canvas Width="300" Height="300" Margin="5">
                    <Ellipse Fill="Transparent" Width="300" Height="300" Canvas.Left="0" Canvas.Top="0" 
                            Stroke="#FF878889" StrokeThickness="10"
                            MouseLeftButtonUp="Ellipse_MouseLeftButtonUp"
                            MouseMove="Ellipse_MouseMove"/>
                    <Ellipse Fill="Transparent" Width="60" Height="60" Canvas.Left="120" Canvas.Top="120"/>
                    <Canvas>
                        <Line Stroke="Transparent" StrokeThickness="5" X1="150" Y1="150" X2="150" Y2="10"
                                MouseLeftButtonUp="Ellipse_MouseLeftButtonUp"/>
                        <Ellipse Fill="White" Width="30" Height="30" Canvas.Left="140" Canvas.Top="0"
                                MouseLeftButtonDown="Ellipse_MouseLeftButtonDown"
                                    MouseLeftButtonUp="Ellipse_MouseLeftButtonUp">
                            <Ellipse.ToolTip>
                                <ToolTip>
                                    <Binding RelativeSource="{RelativeSource TemplatedParent}"
                        Path="Value" Converter="{StaticResource valueTextConverter}"/>
                                </ToolTip>
                            </Ellipse.ToolTip>
                        </Ellipse>
                        <Canvas.RenderTransform>
                            <RotateTransform CenterX="150" CenterY="150">
                                <RotateTransform.Angle>
                                    <MultiBinding Converter="{StaticResource valueAngleConverter}">
                                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Value"/>
                                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Minimum"/>
                                        <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Maximum"/>
                                    </MultiBinding>
                                </RotateTransform.Angle>
                            </RotateTransform>
                        </Canvas.RenderTransform>
                    </Canvas>
                </Canvas>
            </Viewbox>
        </ControlTemplate>
    </Slider.Template>
</Slider>

public class ValueAngleConverter : IMultiValueConverter
{
    #region IMultiValueConverter Members

    public object Convert(object[] values, Type targetType, object parameter,
                  System.Globalization.CultureInfo culture)
    {
        double value = (double)values[0];
        double minimum = (double)values[1];
        double maximum = (double)values[2];

        return MyHelper.GetAngle(value, maximum, minimum);
    }



    public object[] ConvertBack(object value, Type[] targetTypes, object parameter,
              System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        #endregion
    }

   public class ValueTextConverter : IValueConverter
    {

        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter,
                  System.Globalization.CultureInfo culture)
        {
            double v = (double)value;
            return String.Format("{0:F2}", v);
        }

        public object ConvertBack(object value, Type targetType, object parameter,
            System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        #endregion
    }

公共类ValueAngleConverter:IMultiValueConverter
{
#区域IMultiValueConverter成员
公共对象转换(对象[]值,类型targetType,对象参数,
System.Globalization.culture(信息文化)
{
双值=(双)值[0];
双最小值=(双)值[1];
双最大值=(双)值[2];
返回MyHelper.GetAngle(值、最大值、最小值);
}
公共对象[]转换回(对象值,类型[]目标类型,对象参数,
System.Globalization.culture(信息文化)
{
抛出新的NotImplementedException();
}
#端区
}
公共类ValueTextConverter:IValueConverter
{
#区域转换器成员
公共对象转换(对象值、类型targetType、对象参数、,
System.Globalization.culture(信息文化)
{
双v=(双)值;
返回String.Format(“{0:F2}”,v);
}
公共对象转换回(对象值、类型targetType、对象参数、,
System.Globalization.culture(信息文化)
{
抛出新的NotImplementedException();
}
#端区
}
结果是:

是否可以将此
圆形滑块的外观更改为类似于此滑块的外观:

并添加值勾选并显示此控制器的当前值以及此控件的按钮,如示例所示,而不是将
文本块
放在
圆圈内