【问题标题】:Passing Continuous data from one XAML page to another Windows 10将连续数据从一个 XAML 页面传递到另一个 Windows 10
【发布时间】:2016-01-08 13:31:13
【问题描述】:

我正在尝试从一个 xaml 页面上的串行设备读取数据并将其传递给另一个页面。我可以让数据转到另一页,但不能连续。例如,如果我要使用 textchanged 事件,则数据来自第一页,但只有一次。这可能是因为数据不会一直在变化?有时在更改之前多次读取保存值。然而,我也模拟了数据不断变化,但事件仍然只触发一次。我目前正在从主页的 app.xaml.cs 中存储一个字符串值,然后从第二页读取它。我也尝试过使用静态类,它们都有相同的结果。我确定它是一个简单的修复,但我无法弄清楚。任何帮助表示赞赏。

在主页上我有这个。

  App app = Application.Current as App;
  app.readData = rotAngle.ToString("F2");

这个在下一页

  private void rawValText_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
    {            
        App app = Application.Current as App;
        rawValText.Text = app.readData;
    }

但它只在页面加载时触发一次。

【问题讨论】:

  • 可能需要添加一些代码来演示。如果你有频繁的数据更改需要反映视图和/或通知另一个类,我认为你应该使用 MVVM。
  • 添加了一些代码。 -谢谢
  • 你的 textchanged 事件在哪里?
  • 我现在把它作为一个文本块,所以使用 DataContextChangedEvent

标签: c# wpf xaml windows-10-universal


【解决方案1】:

使用事件。为此使用静态类。

在 Page1 中收到数据时触发事件。

在 Page2 中编写事件处理程序以接收从 Page1 触发的事件。

简单!

【讨论】:

  • 感谢您的回复。我试过了,但事件只触发一次。我需要它连续发射
  • 这两个页​​面在 2 个单独的框架中一直处于活动状态?
  • 只有第一页。第二个仅在您使用时才有效
  • 当它不是你期望它如何参与事件处理时
  • 我不是。仅当第二页处于活动状态时。
【解决方案2】:

您似乎错误地使用了 DataContextChangedEvent。 DataContextChangedEvent 在 DataContext 更改时触发。您应该使用适当的事件。您可以查找 MVVM 并使用 INotifyPropertyChanged,或者您可以保持自己的方式并订阅另一个页面上的事件,您从另一个页面通知:

How to subscribe to other class' events in c#?

基本上你必须自己编写通知代码。

编辑:示例 MVVM 教程:

http://www.codeproject.com/Articles/126249/MVVM-Pattern-in-WPF-A-Simple-Tutorial-for-Absolute

【讨论】:

  • 好的,我会调查的。与另一种方式相比有优势吗?
  • 我会使用 MVVM 只是因为它更干净,并且更容易处理 UI 问题(没有线程问题等),但是涉及到很多 XAML。另外,如果您已经使用代码隐藏(即您在做什么)完成了您的应用程序,我猜您不会想重做它。
  • 实际上,鉴于您的目标是 Windows 10 通用,MVVM 将是最佳选择。
  • 啊,我明白了。我将对此进行调查并尝试在明天实施。谢谢你。我会通知你结果。
猜你喜欢
  • 1970-01-01
  • 2020-11-20
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-24
相关资源
最近更新 更多