Я видел множество решений для привязки ReactiveList к элементу управления ComboBox в WPF, чтобы элемент управления отображал описания элементов перечисления. Все эти решения используют стандартный TypeConverter и привязку в XAML, но я использую ReactiveUI, поэтому я хочу сделать привязки в коде позади. Без какого-либо преобразования я получаю необработанные значения перечисления в виде строк, а не их описаний, поэтому, по крайней мере, я знаю, что привязка работает правильно, но я не разобрался с преобразованием.
Я почти уверен, что мне нужно использовать IBindingTypeConverter (и зарегистрировать его с помощью Splat), но я не могу найти правильную комбинацию toType и fromType в моем конвертере, чтобы это произошло. Я пробовал следующее с частичным успехом:
public class MyEnumToStringConverter : IBindingTypeConverter
{
public int GetAffinityForObjects(Type fromType, Type toType)
{
if (fromType == tyepof(ReactiveList<MyEnumType>))
{
return 100;
}
return 0;
}
public bool TryConvert(object from, Type toType, object conversionHint, out object result)
{
...
}
}
В отладчике GetAffinityForObjects() срабатывает и возвращает 100 во время вызова для привязки ItemsSource ComboBox, но TryConvert никогда не вызывается.
Может ли кто-нибудь привести хороший пример того, как сделать это правильно в ReactiveUI?