Универсальный конвертер в WPF - PullRequest
0 голосов
/ 27 апреля 2018

В моем приложении WPF есть конвертер:

<DataGridCheckBoxColumn Header="Is Available?" 
                        Binding="{Binding Amount, Converter={StaticResource AmountToIsAvailableConverter}}" 
                        Width="*"/>

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

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    var amount = (int)value ;
    ......
}

Я связываю столбец со свойством модели представления, которое имеет тип int. Значение указанного выше свойства Amount передается методу «Convert» объекта «AmountToIsAvailableConverter» в качестве параметра «значение» (тип объекта «объект»). Теперь, насколько я понимаю, здесь произошел бокс, потому что значение int теперь обрабатывается как тип 'object' в записи метода Convert. Эта операция упаковки, очевидно, произошла даром, потому что в первой строке моего конвертера я распаковываю значение и возвращаю его обратно в int:

var amount = (int)value ;

Есть ли в WPF конвертер с методом Convert, который использует Generics?

public class AmountToIsAvailableConverter : IValueConverter<int>

Так что я мог бы сделать что-то подобное:

public object Convert(int value, Type targetType, object parameter, CultureInfo culture)
{......}

Важная часть здесь: int value

Есть ли способ избежать операций упаковки и распаковки, кроме добавления дополнительного свойства в мою модель представления?

...