Мне нужно преобразовать значение из двух частей в строку и обратно, например:
{Value = 12.0, Units = DimensionUnits.Inches}
Преобразование в
"12 in"
Это довольно просто, используя многозначный преобразователь для преобразованияиз источника, но преобразование обратно становится невозможным, если пользователь не указывает тип единицы в строке, поэтому многозначный преобразователь не выглядит как нужное мне решение.
Параметр прямого преобразователя работать не будет, посколькутип модуля должен быть связан, поэтому я исследовал, как создать привязываемый параметр.Создать привязываемый параметр на самом деле довольно легко - он происходит из DependencyObject - но тогда у вас есть проблема с тем, что ваш конвертер не живет в визуальном дереве - и, следовательно, не может связываться с чем-либо - к чему есть два решения:
http://tomlev2.wordpress.com/2011/03/21/wpf-how-to-bind-to-data-when-the-datacontext-is-not-inherited/ http://shujaatsiddiqi.blogspot.com/2011/02/wpf-binding-converter-parameter.html
Первый метод выводит ваш конвертер из Freezable вместо DependencyObject, чтобы разрешить DependencyProperties.Это работает и позволяет вам выполнять привязку в разделе Whwhat.Resources, но имеет очень странное поведение, как только прослушивание привязки при первом использовании во всем приложении.
Второй метод, похоже, неработать на всех.Свойство зависимости никогда не обновляется при изменении источника.
<pf:BindingReflector Target="{Binding Source={StaticResource DistanceConverter}, Path=Units, Mode=TwoWay}"
Source="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=g:TestWindow, AncestorLevel=1}, Path=Units, Mode=TwoWay}"/>
Кто-нибудь знает решение этой проблемы или это большое ограничение WPF?