【发布时间】:2023-03-11 08:17:01
【问题描述】:
我在我的 WPF 应用程序运行时加载了一个 XAML 文件(页面):
<Frame x:Name="xamlNode"></Frame>
后面的代码:
FileStream s = new FileStream("Page1.xaml", FileMode.Open);
xamlNode.Source = new Uri("Page1.xaml", UriKind.RelativeOrAbsolute);
xamlNode.NavigationUIVisibility = NavigationUIVisibility.Hidden;
s.Close();
我觉得奇怪的第一件事是代码是在 Page1.xaml.cs 上运行的。这个 XAML 文件不应该没有任何业务逻辑吗?不过这正是我需要的。
但是我怎样才能在我的父 WPF 应用程序中从 Page1.xaml.cs 中引发事件,例如按下按钮?
我的问题的根源是:我需要一个用户在 VS 中设计简单的“页面”,然后在运行时加载。但是当用户在该页面上完成某些操作时,我需要一个事件。
【问题讨论】:
-
这应该是可能的。您是否使用过 viemodel 并使用过 MVVM 绑定?您是否将该视图模型绑定到页面的数据上下文?
-
我没有视图模型
-
好的,所以,在您的用例中,页面有一个按钮。谁来定义当用户单击该按钮时会发生什么?它是在应用程序中定义的还是在页面上定义的?
-
“这个 XAML 文件不应该没有任何业务逻辑吗”?这取决于开发商。您应该查看 MVVM。这是开发基于 XAML 的 UI 应用程序的推荐模式。您想在何时何地向谁发起活动?
-
我在 Page1.xaml.cs 中有验证逻辑,并希望在 Page1 有效时在我的主应用程序上引发事件。