我有一個slider實施System.Windows.Controls.Slider:使滑塊使用現有的IValueConverter
class MySlider : Slider
{
public MySlider()
{
Minimum = 1;
Maximum = 1000;
}
}
我用這樣的:MySlider slider = new MySlider() { Width = 400, Name = "TheSlider"};
它運作良好,但它是線性的。
我想使它非線性,因爲合理的值就像1,2,10,1000(例如)。
所以我定義了一個非線性IValueConverter這樣的:
public class LogScaleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (int)Math.Log((int)value);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return (int)Math.Exp((double)value);
}
}
問題:如何使滑塊使用本轉換器?
你有一個viewmodel? – thumbmunkeys
@thumbmunkeys:不,只是MySlider,如上面的源代碼所示。 –
值轉換器通常用於數據添加,而不是直接在控件中使用。如果您需要使其在沒有數據綁定的情況下工作,您可以將其他屬性添加到MySlider類中,例如'LogValue'。 – Clemens