【问题标题】:create Page from Type in C# UWP从 C# UWP 中的类型创建页面
【发布时间】:2017-11-02 12:12:11
【问题描述】:

我看到了 UWP check the current page for name or instance 关于stackoverflow的问题。它提到我可以通过currentFrame.SourcePageType 获取页面的类型。我的问题是:一旦我在当前Frame 中激活了页面类型,我如何访问该页面的元素,例如一个文本框?

【问题讨论】:

  • 您想从页面外部访问内部成员,而不引用该页面(现在您只有一个类型)...虽然这是可能的,但我觉得您可能是以错误的方式做事。现在我们使用像 MVVM 这样的模式,所以我们不需要从 C# 代码中操作控件,我们只需要处理视图绑定到的模型/视图模型。
  • 除非 m,否则您确实有充分的理由需要这种访问权限。
  • 别担心,@7gegenTheben,你可以在 UWP 中为所欲为。

标签: c# uwp


【解决方案1】:

不确定您要做什么,但这很酷。这样做:

Activator.CreateInstance(null, PageType.ToString());

一旦实例化,页面就不能添加到Frame,所以如果我们想导航到一个实例,你应该记住这一点。

要访问控制,我认为您的意思是,您需要通过这样做将它们公开:<Control x:Name="MyControl" x:FieldModifier="Public" /> x:ModifyField 指令是关键。

更多:https://docs.microsoft.com/en-us/windows/uwp/xaml-platform/x-fieldmodifier-attribute

哎呀,还有这个

你不想实例化类型,这是我最初认为你想要做的,现在我看到你只想访问Frame中当前可见的Page,那就是所以 容易多了。

var p = _frame.Content as Page;
p.MyControl.Text = "Hello world";

祝你好运!

【讨论】:

  • 我留下了答案的第一部分,错误的部分,只是因为它很有趣。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
  • 2021-06-13
  • 1970-01-01
  • 1970-01-01
  • 2010-11-26
  • 2014-04-13
相关资源
最近更新 更多