HTML-редактор WPF Smith меняет все мои HTML-теги на верхний регистр - PullRequest
0 голосов
/ 29 мая 2019

Я создаю приложение WPF, использующее редактор HTML Smith. Приложение - MVVM, и у меня есть элемент управления Smith, связанный с полем с содержимым HTML. Все работает нормально, за исключением того, что реализация IsDirty, над которой я работаю, запускается, если вы щелкаете мышью или даже наводите курсор на элемент управления HTML. Я посмотрел немного поближе и обнаружил, что как только элемент управления теряет фокус, он меняет все мои теги на верхний регистр (таким образом, приложение видит поле как измененное и устанавливает модель в грязное состояние).

Я с трудом справляюсь с какой-либо документацией по этому элементу управления, но до сих пор я не смог найти где-нибудь, чтобы контролировать это поведение.

Вот XAML для элемента управления:

<smith:HtmlEditor Name="fldcomments" Height="320" BindingContent="{Binding Path=Student.Comments, Mode=TwoWay }"/>

Буду признателен за любые подсказки.

1 Ответ

0 голосов
/ 30 мая 2019

Так что это чертовски круто, но это лучшее, что я придумал. Я использовал NUglify для извлечения простого текста и добавил это в качестве сравнения для моей функции установки поля. Вот код для функции:

protected void SetField<T>(ref T field, T value, string propertyName)
    {

           if (!EqualityComparer<T>.Default.Equals(field, value))
            {
                IsDirty = true;

            if ((propertyName == "Comments") && (value != null) && (field != null))
            {

                var ugField = Uglify.HtmlToText((value as string));
                var ugValue = Uglify.HtmlToText(field as string);
                string strField = Regex.Replace(ugField.Code, @"\s+", string.Empty);
                string strValue = Regex.Replace(ugValue.Code, @"\s+", string.Empty);

                if (strField == strValue)
                { IsDirty = false; }
            }

                field = value;

                OnPropertyChanged(propertyName);
            }

        }

Мне пришлось добавить regex.replace, чтобы избавиться от лишних пробелов, которые оставила там функция HTMLToText.

Я не горжусь, но это работает. Все еще очень открыт для лучшего решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...