如何对字符串中引用的绑定数据执行操作

时间:2017-07-27 17:32:10

标签: c# xaml

我想将滑块的值从小数转换为2位整数。基本上,我想使用:F2将它只到2位小数,然后乘以100.我无法弄清楚如何乘以100。

我该怎么做?

XAML:

<Label Text="{Binding Source={x:Reference Slider},
                      Path=Value, 
                      StringFormat='Font Size: {0}'}"/>
<Slider x:Name="Slider"/>

1 个答案:

答案 0 :(得分:1)

其中一种方法是在代码中创建一个新的值转换器并将其作为静态资源引用。这种方法将允许代码内的任何类型的转换以及传递给转换器的任何类型的参数。

以下文章描述了三元运算符在C#中的工作原理 https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/conditional-operator

希望它有所帮助!

XAML:

<Window.Resources>
    <local:SliderValueMultiplier x:Key="multiplier"/>
</Window.Resources>
<StackPanel>
    <Label Content="{Binding Source={x:Reference Slider}, Path=Value,
                             Converter={StaticResource multiplier}, 
                             ConverterParameter=100}"></Label>
    <Slider x:Name="Slider"></Slider>
</StackPanel>

C#代码:

public class SliderValueMultiplier : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (parameter == null) return 0;
        double.TryParse(parameter.ToString(), out double multiplier);
        return value != null ? Math.Round((double) value, 2) * multiplier : 0;        
    }

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

免责声明:代码只是您的解决方案可能的样子。如果没有额外的测试,它永远不应被视为生产就绪。