我正在构建使用Smith Smith HTML编辑器的WPF应用程序。该应用程序是MVVM,我已将Smith控件绑定到具有HTML内容的字段。一切正常,除了单击或什至将鼠标移到HTML控件上时,我正在处理的IsDirty实现都会触发。我仔细看了一下,发现一旦控件失去焦点,它就会将我所有的标签都更改为大写(因此该应用将字段视为已更改并将模型设置为脏)。
我很难获得用于此控件的任何文档,但到目前为止,我还找不到任何地方来控制此行为。
以下是控件的XAML:
<smith:HtmlEditor Name="fldcomments" Height="320" BindingContent="{Binding Path=Student.Comments, Mode=TwoWay }"/>
任何提示,我将不胜感激。
答案 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函数留在其中的一些多余空白。
我不感到骄傲,但确实有效。仍然对更好的解决方案持开放态度。