Я использую старую старую привязку DataBinding в проекте Winforms.
У меня есть форма с элементом управления (DevExpress RichTextEdit для тех, кто хочет знать)
Я хочупривязать свойство HtmlText элемента управления richTextEdit к свойству на моей ViewModel
Я сделал эту привязку, и это не проблема.Однако я понял, что HtmlText, который выходит из richTextEdit, является HtmlEncoded.Это означает, что символы закодированы в их html-представлении.например, <
становится <
и т. д.
Я не хочу, чтобы это произошло, поскольку эти теги имеют особое значение в дальнейшем, и мне нужно их сохранить.
Так что в моей ViewModelкоторый имеет все свойство notify, изменил материал и, по сути, оборачивает мой объект домена, я мог бы сделать это
public class ViewModel: INotifyPropertyChanged
{
public string WrappedProperty
{
get => domainObject.Property;
set
{
domainObject.Property = HttpUtility.DecodeHtml(value);
//Raise Property changed event etc
}
}
}
, и в своей форме я создаю привязку данных
Binding binding = new Binding("HtmlText", _viewModel, "WrappedProperty", true, DataSourceUpdateMode.OnPropertyChanged,null,null);
_richEditControl.DataBindings.Add(binding);
, теперь это работает как задуманоОднако мне это не нравится.Моя модель представления делает что-то из-за того элемента управления, которым я сейчас пользуюсь.Он «дырявый» и пахнет.
Я хочу, чтобы мой Вид обрабатывал определенные проблемы.
Я хотел бы создать привязку между свойством Html Text элемента управления и свойством WrappedProperty моделей представления, предоставляя настраиваемую функцию, которая будет использоваться при установке свойства из элемента управления в модель представления.Это что-то, что может быть реализовано или есть какая-то общая работа вокруг шаблона, который мне не хватает?
Спасибо