Привязка десятичного числа XAML Silverlight к удвоению

У меня есть несколько столбцов в DataGridView, у которых для свойства Binding установлено примерно следующее:

Binding="{Binding NetPrice}"

Проблема в том, что это поле NetPrice является типом Decimal, и я хотел бы преобразовать его в Double внутри DataGrid.

Есть ли способ сделать это?


person Overhed    schedule 20.10.2009    source источник
comment
Это не работает как есть?   -  person AnthonyWJones    schedule 21.10.2009


Ответы (1)


Я бы создал Конвертер. Конвертер берет одну переменную и «преобразует» ее в другую.

Есть лот ресурсов для создания конвертеров. Их также легко реализовать в C # и использовать в xaml.

Ваш конвертер может выглядеть примерно так:

public class DecimalToDoubleConverter : IValueConverter   
{   
    public object Convert( 
        object value,   
        Type targetType,   
        object parameter,   
        CultureInfo culture)   
    {   
        decimal visibility = (decimal)value;
        return (double)visibility;
    }   

    public object ConvertBack(   
        object value,   
        Type targetType,   
        object parameter,   
        CultureInfo culture)   
    {
        throw new NotImplementedException("I'm really not here"); 
    }   
}

После того, как вы создали свой конвертер, вам нужно будет указать своему файлу xaml, чтобы он включал его следующим образом:

в ваших пространствах имен (в самом верху вашего xaml) включите его так:

xmlns:converters="clr-namespace:ClassLibraryName;assembly=ClassLibraryName"

Затем объявите статический ресурс, например:

<Grid.Resources>
    <converters:DecimalToDoubleConverter x:Key="DecimalToDoubleConverter" />
</Grid.Resources>  

Затем добавьте его в свою привязку следующим образом:

Binding ="{Binding Path=NetPrice, Converter={StaticResource DecimalToDoubleConverter}"
person Jeremiah    schedule 20.10.2009
comment
Спасибо. Раньше я использовал конвертеры, я просто подумал, что, возможно, есть альтернатива с некоторыми из более простых типов данных. - person Overhed; 21.10.2009