WPF Smith HTML编辑器正在将我所有的HTML标签更改为大写

时间:2019-05-29 18:03:18

标签: c# wpf controls

我正在构建使用Smith Smith HTML编辑器的WPF应用程序。该应用程序是MVVM,我已将Smith控件绑定到具有HTML内容的字段。一切正常,除了单击或什至将鼠标移到HTML控件上时,我正在处理的IsDirty实现都会触发。我仔细看了一下,发现一旦控件失去焦点,它就会将我所有的标签都更改为大写(因此该应用将字段视为已更改并将模型设置为脏)。

我很难获得用于此控件的任何文档,但到目前为止,我还找不到任何地方来控制此行为。

以下是控件的XAML:

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

任何提示,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

所以这很糟糕,但这是我想出的最好的。我使用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函数留在其中的一些多余空白。

我不感到骄傲,但确实有效。仍然对更好的解决方案持开放态度。