C# 十进制到整数转换器

C# 十进制到整数转换器,c#,uwp,C#,Uwp,我想进行转换,将十进制转换为整数。请看我的代码: <ProgressBar Margin="0,10,0,10" Grid.Row="2" Grid.ColumnSpan="3" IsIndeterminate="False" Height="10" Maximum="{Binding SavingGoal, Converter={StaticResource DecimalToInt}}" Value="{Binding Balance, Converter={Stat

我想进行转换,将十进制转换为整数。请看我的代码:

<ProgressBar Margin="0,10,0,10" 
    Grid.Row="2" Grid.ColumnSpan="3" IsIndeterminate="False" Height="10"
    Maximum="{Binding SavingGoal, Converter={StaticResource DecimalToInt}}" Value="{Binding Balance, Converter={StaticResource DecimalToInt}}"/>
下面是课堂:

public decimal SavingGoal { get; set; }
public decimal Balance { get; set; }

所以我的问题是,我不知道如何使用IValueConverter来适应我的情况。我想将UserControl正在解析的十进制数转换为int,并使progressbar最终工作。

您必须将您的
DecimalPoint
转换器注册为静态资源

<ns:DecimalToIntConverter x:Key="DecimalToInt" />

您必须将
decimalpoint
转换器注册为静态资源

<ns:DecimalToIntConverter x:Key="DecimalToInt" />

小数是截断还是四舍五入?如果你同意四舍五入,
这不需要转换器。您可以使用绑定上的StringFormat参数来执行此操作。如果使用#的字符串格式,它将进行舍入。

小数是要截断还是舍入?如果你同意四舍五入,
这不需要转换器。您可以使用绑定上的StringFormat参数来执行此操作。如果使用字符串格式#,它将取整。

您真的需要小数吗?最大属性和价值属性是双倍的,所以如果这个项目是关于钱的,就使用双倍。如果逗号后不需要超过16位数字,则双精度更为重要

如果仍要使用转换器进行转换,请在转换器类的convert()-方法中进行转换

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    decimal x = (decimal)value;
    return Decimal.ToInt32(x);
}

你真的需要小数吗?最大属性和价值属性是双倍的,所以如果这个项目是关于钱的,就使用双倍。如果逗号后不需要超过16位数字,则双精度更为重要

如果仍要使用转换器进行转换,请在转换器类的convert()-方法中进行转换

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    decimal x = (decimal)value;
    return Decimal.ToInt32(x);
}

是否最好先检查它是否真的是十进制的?我的意思是:

if(值为十进制){
返回系统。转换为32(值);
}

返回false

最好先检查它是否真的是十进制的?我的意思是:

if(值为十进制){
返回系统。转换为32(值);
}

返回false

能否显示您的
DeciamlToInt
转换器?您的转换器需要通过储蓄目标和余额。IValueConverter接口确实指定了一个参数,但添加一个执行计算的“派生属性”可能更直接。类似于
public int PercentOfGoal{get{return(int)(Balance/SavingsGoal)*100;}}
,然后将
Value
绑定到该值。当时我的转换器上没有任何东西。现在我在Convert方法中做了类似的事情:
if(value是decimal){returnsystem.Convert.ToInt32(value);}returnfalse
您可以显示您的
DeciamlToInt
转换器吗?您的转换器需要通过储蓄目标以及余额。IValueConverter接口确实指定了一个参数,但添加一个执行计算的“派生属性”可能更直接。类似于
public int PercentOfGoal{get{return(int)(Balance/SavingsGoal)*100;}}
,然后将
Value
绑定到该值。当时我的转换器上没有任何东西。现在我在Convert方法中做了类似的事情:
if(value是decimal){returnsystem.Convert.ToInt32(value);}returnfalse我已经将转换器注册为静态资源。谢谢!:)我已经将转换器注册为静态资源。谢谢!:)我尝试使用StringFormat参数,但由于代码中的其他问题,它在我的案例中不起作用。我尝试使用StringFormat参数,但由于代码中的其他问题,它在我的案例中不起作用。