.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的主要内容,如果未能解决你的问题,请参考以下文章

C#WPF应用程序.NET 4.5设置鼠标位置[重复]

升级 .NET 版本后,TwoWay 或 OneWayToSource 绑定无法在只读属性上工作

WPF .Net 4 - OneWayToSource 绑定到只写属性适用于某些机器!如何?

WPF .Net 4 - OneWayToSource 绑定到只写属性适用于某些机器!如何?

C# WPF .Net4.8 Framework ReadOnly TextBox 文本绑定延迟更新

WPF 多重绑定 .Net Framework 4.0