2015-11-04 41 views
9

Dolayısıyla .net 4.5 projemde David Veeneman's Bindable WPF RichTextBox kullanmayı deniyorum. Kontrol ve ValueConverter kodunu ekledikten sonra sadece public object Convert()'un tetiklendiğini fark ettim ancak public object ConvertBack() değil.WPF Zengin Metin Kutusu. Net 4.5 içinde binleştirilebilir.

Bu projeye yapılan yorumları okuduktan sonra, kontrol kaynağı kodunun aşağıdaki bölümlerini değiştirdim.

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; 
} 

Ve bu olay Handler:

private void OnTextChanged(object sender, TextChangedEventArgs e) 
{ 
    // Set the TextChanged flag 
    m_TextHasChanged = true; 

    // Changed: 
    Document = TextBox.Document; 
} 

Şimdi ValueConverter her iki yöntem iyi çalıştı ama private void OnNormalTextClick(object sender, RoutedEventArgs e) gibi olaylar Runtime üzerinde FatalExecutionEngineError neden olur.

WPF 3.5'ten 4.5'e kadar büyük değişiklikler olup olmadığını merak ediyorum. Veya bu konuda çalışmak isteyen birileri var mı? XAML

<uc:FsRichTextBox Margin="5" 
    Document="{Binding Path=Ereignis.Bericht, 
    Converter={StaticResource flowDocumentConverter}, 
    UpdateSourceTrigger=PropertyChanged, NotifyOnSourceUpdated=True}" /> 
+0

Sadece bağlama işlemini nasıl yaptığınızı gösterebilir misiniz? –

+0

.NET framework 4.6'yı kurduysanız (4.5'i hedefleseniz bile)? Sürümünüzde veya Hata Ayıklamada mı çalışıyorsunuz? Ayrıca, demo ve değişikliklerinizle kutuda yeniden oluşturamıyorum, tam bir repro kodunuz var mı? –

+0

@SimonMourier Mevcut geliştirme makinemde .NET 4.5.1 yüklü. Hedef 4,5 – Smartis

cevap

0

Binding'in Güncelleme


Ben hedef çerçevesinde 4.0 ve 4.5 ile VS2015 içinde demo size linked here koştu. İki yönlü veri bağlamayı çıkardığımda güncellenmez.

RTB'nize ekleyin. İki yönlü veri bağlama ve bir isim:

Mode=TwoWay 
x:Name="EditBox" 

Doğrusu metin burada kendini değiştirmek yönetmek daha düşünmek, bu kaldırın:

// Changed: 
Document = TextBox.Document; 

kullanın verilerini güncellemek için bir olay işleyicisi. ? Ben bir düğme tıklayın Ve bu güncelleştirmeyi yönetmesine izin varsayıyorum (güncellemelerinizi yönetiyor olay işleyicinizde Sonra

this.EditBox.UpdateDocumentBindings(); 

x:. Name özelliği değerlidir

Bu. tüm kaynak kodu bulunur.

sen. Projeniz ben daha fazla ayrıntı sağlayabilir. Ama yeni başlayanlar için, bunu yapacağını nasıl düzenlenir hakkında daha net olması sağlanır örneğe daha yakından sopa Eğer.