2011-03-03 14 views
6

Bir ana pencereli ve farklı sayfalara sahip bir WPF uygulamasına sahibim. Sayfalardan birinde (OverzichtPage) bir DataController'a (Data) bağlı bir textBox'ım var. İlk baştaWPF metin kutusu ciltlemesi ileri ve geri gidildikten sonra kayboluyor

public static DependencyProperty data = DependencyProperty.Register("Data", typeof(DataController), typeof(OverzichtPage)); 
    public DataController Data 
    { 
     get { return (DataController)GetValue(data); } 
     set { SetValue(data, value); } 
    } 


<TextBox Name="naamPatientTxtBox" Text="{Binding Path=Data.Patient.naam, Mode=TwoWay}" DataContext="{Binding ElementName=OP}" /> 

: (Bu hasta aynı kalmalı ve kaybolanları olamaz yani DataController, bir Singleton ise .. kayda değer olabilir) (ki sayfanın kod-behind üzerinde bir DependencyProperty olan) Görme, bu bağlanma işe yarıyor gibi görünüyor. Bir düğmeye

<Button Content="Meer info/ Wijzigen" Click="MeerInfoWijzigenBtn_Click" /> 

private void MeerInfoWijzigenBtn_Click(object sender, RoutedEventArgs e) 
    { 
     Uri pageFunctionUri = new Uri("View/ZorgTrajectPage1.xaml", UriKind.Relative); 
     NavigationService.Navigate(pageFunctionUri); 
    } 

tıklayarak başka bir sayfaya gidin ve bağlayıcı geri gezinmek aniden çalışma durdurur. Geri döndükten sonra öğrendim, naamPatientTxtBox.GetBindingExpression (TextBox.TextProperty) .ParentBinding; boş. Bu bağlantının neden navigasyondan sonra aniden durduğuna dair bir ipucu var mı? Bunun nasıl mümkün olduğunu anlamıyorum.

cevap

6

Sayfanın KeepAlive özelliğini true olarak ayarlamayı denediniz mi? Tarih/önbellek sorunları ile karşılaşıyor olabilirsiniz. Devlet, belirli bir şekilde saklanmaz.

+0

Çok teşekkür ederim Erno! Bu gerçekten sorunu çözdü! WPF'ye yeniyim ve WPF sayfalarında KeepAlive gibi bir şey olduğunu bilmiyordum. – StefK

+0

Bu, bağlama sorununu çözer. Ancak önbelleğin kalıcı olmamasını istersek (yani yeni bir sayfanızın olduğundan emin olmak isterseniz)? Metin kutusuna bu bağlantı sızıntısı sorunu çok garip çünkü RelayCommands hala çalışıyor ... – Goufalite

+1

@Goufalite - Bu farklı bir soru ve ayrı ayrı gönderilmelidir. Http://stackoverflow.com/questions/11654421/detect-navigationwindow-go-back-event adresine bakın. –

0

Ana kapsayıcının (geçerli Pencere veya Sayfa) Loaded olayına bir breakpointat koyar, DataContext özelliğini (herhangi bir şey içeriyor mu?) Kontrol edip gerekiyorsa sıfırlamaya çalışıyorum.

Başka bir fikir, TextBox.DataContext'i Veri'ye, sonra da Patient.naam'a olan metni ayarlayın, böylece hata ayıklamak sizin için daha kolay olacaktır, aynı zamanda verimli DataContext devralmalarına izin verecektir.

+0

Sorun şu ki, değişmekte olan DataContext değil. Bu bir nullreference haline bağlanma kendisi .. – StefK

İlgili konular