向前和向后导航后,WPF文本框绑定消失

时间:2011-03-03 12:38:00

标签: wpf binding textbox

我有一个带有主窗口和不同页面的WPF应用程序。在其中一个页面(OverzichtPage)上,我有一个绑定到DataController(Data)的textBox。 (这是页面代码隐藏的dependencyProperty)(可能值得一提的是:DataController是一个Singleton,因此患者应该保持不变并且不能消失...)

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}" />
乍一看,这种绑定似乎有效。当我通过单击按钮导航到另一页时

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

然后导航回来,绑定突然停止工作。我在导航回来后发现了naamPatientTxtBox.GetBindingExpression(TextBox.TextProperty).ParentBinding;是空的。有没有人知道为什么这个绑定在导航后突然消失了?我真的不明白这是怎么回事。

2 个答案:

答案 0 :(得分:6)

您是否尝试将网页的KeepAlive属性设置为true? 您可能遇到了历史/缓存问题。国家不是自动保留的。

答案 1 :(得分:0)

我会在父容器(当前窗口或页面)的Loaded事件中放置一个断点,检查DataContext属性(它是否包含任何内容?)并尝试在需要时重置它。

另一个想法是,将TextBox.DataContext设置为Data,然后将文本设置为Patient.naam,这样,您将更容易调试它,它也将允许高效的DataContext继承。