2015-11-04 11 views
9

私はここでDavid Veeneman's Bindable WPF RichTextBox私の.net 4.5プロジェクトで使用しようとしています。私のコードにコントロールとValueConverterを追加した後、public object Convert()だけがトリガーされますが、public object ConvertBack()は認識されません。WPFリッチテキストボックスバインド可能で.net 4.5

このプロジェクトへのコメントを読んだ後、私は制御ソースコードの次の部分を変更しました。

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}" /> 
+0

あなたは拘束力をどのようにして表示することができますか? –

+0

.NETフレームワーク4.6をインストールしましたか(4.5をターゲットにしていても)?リリースやデバッグで試していますか?また、私はデモとあなたの変更とボックスで再現することはできません、完全なreproコードを持っていますか? –

+0

@SimonMourier私の現在の開発マシンでは、.NET 4.5.1がインストールされています。 4.5まだターゲット – Smartis

答えて

0

にバインド


更新

私は、ターゲットフレームワーク4.0と4.5とVS2015であなたがlinked hereデモを実行しました。双方向データバインディングを取り除くと、更新されません。

あなたのRTBに追加します。双方向のデータバインディングと名前:私はむしろテキストはここに自分自身を変更する管理よりも、考える

Mode=TwoWay 
x:Name="EditBox" 

は、これを削除します。

// Changed: 
Document = TextBox.Document; 

は、データを更新するために、イベントハンドラを使用してください。 ?私はボタンをクリックして、この更新を管理することを可能と仮定しています(あなたの更新を管理している、あなたのイベントハンドラで次に

this.EditBox.UpdateDocumentBindings(); 

xは:name属性は貴重である

これを。

プロジェクトがどのように配置されているかを明確にすることができれば、より詳細な情報を提供することができますが、私はこれを行うでしょう。

関連する問題