我有一个带有mainwindow和不同页面的WPF应用程序。在其中一个页面(OverzichtPage)我有一个文本框绑定到DataController(数据)。 (这是在页面的代码隐藏一个DependencyProperty)(可能是值得一提:在DataController类是一个Singleton,使病人应该保持不变,不能disapear ..)WPF文本框绑定在向前导航并返回后消失
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;是空的。有人知道为什么这种绑定在导航后突然消失吗?我真的不明白这是如何可能的。
非常感谢你Erno!这确实解决了问题!我是WPF的新手,不知道WPF页面中有什么像KeepAlive。 – StefK 2011-03-03 14:27:53
这解决了绑定问题。但是如果我希望缓存不是持久的(即确保有新的页面)呢?这个文本框绑定泄漏问题是非常奇怪的,因为我认为RelayCommands仍然有效... – Goufalite 2017-03-15 08:49:23
@Goufalite - 这是一个不同的问题,应单独发布。看看http://stackoverflow.com/questions/11654421/detect-navigationwindow-go-back-event – 2017-03-15 09:38:17