c# - 如何对字符串中引用的绑定(bind)数据执行操作

标签 c# xaml

我想将 slider 的值从小数转换为 2 位整数。基本上,我想使用 :F2 将其保留到小数点后两位,然后乘以 100。不过我不知道如何乘以 100。

我该怎么做?

XAML:

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

最佳答案

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

下面的文章介绍了三元运算符在 C# 中的工作原理 https://learn.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();
    }
}

免责声明:代码只是您的解决方案的示例。未经额外测试,绝不应将其视为生产就绪。

关于c# - 如何对字符串中引用的绑定(bind)数据执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45357444/

相关文章:

c# - 用于有状态应用程序的 ORM。 EF适合吗?或者任何?

c# - 按钮 IsEnabled 永远不会改变

c# - 如何在不超过窗口高度的情况下使 WPF 网格行具有自动高度?

c# - Xamarin 表单 : How to create a dynamic IMarkupExtension?

c# - 在样式文件中使用 setter 覆盖控制资源

c# - 带有 docker microsoft/iis 的卷

c# - 表达式树 GetString 结果

c# - 我是否以错误的方式使用处理程序?

c# - 将多个 .NET 二进制文件合并在一起?

c# - Silverlight:在 XAML 中声明数据集合?