.net 4.5 中可绑定的 WPF Richtextbox
Posted
技术标签:
【中文标题】.net 4.5 中可绑定的 WPF Richtextbox【英文标题】:WPF Richtextbox Bindable in .net 4.5 【发布时间】:2016-02-04 17:10:20 【问题描述】:所以我尝试在我的 .net 4.5 项目中使用David Veeneman's Bindable WPF RichTextBox。在我的代码中添加控件和ValueConverter
后,我注意到只有public object Convert()
会被触发,而public object ConvertBack()
不会。
在阅读了该项目的 cmets 后,我更改了以下部分控件源代码。
private static void OnDocumentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
var thisControl = (EcoRichTextBox)d;
if (thisControl.m_InternalUpdatePending > 0)
thisControl.m_InternalUpdatePending--;
return;
// Changed:
try
thisControl.TextBox.Document = (e.NewValue == null) ? new FlowDocument() : (FlowDocument)e.NewValue;
catch
thisControl.m_TextHasChanged = false;
还有这个事件处理程序:
private void OnTextChanged(object sender, TextChangedEventArgs e)
// Set the TextChanged flag
m_TextHasChanged = true;
// Changed:
Document = TextBox.Document;
现在ValueConverter
的两种方法都可以正常工作,但像private void OnNormalTextClick(object sender, RoutedEventArgs e)
这样的事件会在运行时导致FatalExecutionEngineError
。
所以我想知道 WPF 3.5 到 4.5 是否有重大变化?
或者有人有解决这个问题的想法吗?
更新
XAML 中的绑定
<uc:FsRichTextBox Margin="5"
Document="Binding Path=Ereignis.Bericht,
Converter=StaticResource flowDocumentConverter,
UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True" />
【问题讨论】:
能否请您展示一下您是如何进行绑定的? 您是否安装了 .NET Framework 4.6(即使您的目标是 4.5)?您是在尝试发布还是调试?另外,我无法通过演示和您的更改按框进行复制,您有完整的复制代码吗? @SimonMourier 在我目前的开发机器上安装了 .NET 4.5.1。目标仍为 4.5 【参考方案1】:我在 VS2015 中使用目标框架 4.0 和 4.5 运行了你 linked here 的演示。当我取出双向数据绑定时,它不会更新。
添加到您的实时出价。两种方式数据绑定和一个名字:
Mode=TwoWay
x:Name="EditBox"
我认为与其在此处自行管理文本更改,不如将其删除:
// Changed:
Document = TextBox.Document;
使用事件处理程序更新数据。
然后在管理更新的事件处理程序中(我假设单击按钮?并允许它管理更新。
this.EditBox.UpdateDocumentBindings();
x:name 属性很有价值。
这些都可以在源代码中找到。
如果您可以更清楚地了解您的项目是如何安排的,我可以提供更多详细信息。但对于初学者来说,我会这样做。更贴近提供的示例。
【讨论】:
以上是关于.net 4.5 中可绑定的 WPF Richtextbox的主要内容,如果未能解决你的问题,请参考以下文章
升级 .NET 版本后,TwoWay 或 OneWayToSource 绑定无法在只读属性上工作
WPF .Net 4 - OneWayToSource 绑定到只写属性适用于某些机器!如何?
WPF .Net 4 - OneWayToSource 绑定到只写属性适用于某些机器!如何?