У меня проблемы с конвертером, который я использую для преобразования между строкой и нашим форматом времени.Сам конвертер работает нормально и реализован так:
[ValueConversion(typeof(string), typeof(SimpleTime))]
public class StringToSimpleTimeConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
// convert from string to SimpleTime and return it
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// convert value from SimpleTime to string and return it
}
}
XAML, использующий конвертер, включает сам конвертер в usercontrol.resources, например:
<converter:StringToSimpleTimeConverter x:Key="stringToSimpleTimeConverter"/>
Если свойствовстречается (я использую сетку данных из набора инструментов wpf в фоновом режиме) используется таблица данных для редактирования simpletime:
<DataTemplate x:Key="SimpleTimeEditingTemplate">
<TextBox Text="{Binding, Converter={StaticResource stringToSimpleTimeConverter}, Mode=TwoWay}"/>
</DataTemplate>
Проблема, с которой я сталкиваюсь, заключается в том, что конвертер должен иметь путьуказано в привязке, если это двухсторонний преобразователь (и мне нужно его в обоих направлениях), но свойство, которое я хочу установить, уже является текущим DataContext - Какой путь я могу указать для этого тогда?
Обходной путь, о котором я мог бы подумать, - это ввести в SimpleTime фиктивное свойство, которое просто получает текущий SimpleTime или устанавливает его.
public class SimpleTime
{
...
public SimpleTime Clone
{
get { return new SimpleTime(_amount, _format); }
set { this._amount = value._amount; this._format = value._format; }
}
}
и связывается с ним через
<TextBox Text="{Binding Clone, Converter={StaticResource stringToSimpleTimeConverter}, Mode=TwoWay}"/>
, которое работает нормальноно это не совсем подходящее решение, особенно если мне нужно больше конвертеров ...
любая помощь приветствуется, ура, чувакп