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();
}
#端区
}
结果是:
是否可以将此圆形滑块的外观更改为类似于此滑块的外观:
并添加值勾选并显示此控制器的当前值以及此控件的按钮,如示例所示,而不是将文本块
放在圆圈内