为了账号安全,请及时绑定邮箱和手机立即绑定

如何继承 Xamarin Forms 基类 Page(其中包含视图)?

如何继承 Xamarin Forms 基类 Page(其中包含视图)?

C#
蝴蝶刀刀 2023-09-16 20:18:28
这让我抓狂。我试图从我制作的基本 SettingsPage 继承,但它不起作用,而且我在任何地方都找不到如何执行此操作的示例。我发现的所有示例都涉及继承视图模型和其他非视觉元素。特别是,我不确定您如何处理派生页面中的“Content =”,因为基本页面已经设置了“Content =”。关于继承的 MS doco 说您不继承构造函数,但可以使用 :base() 继承它。我已经组合了一个颜色方案选择器(在 amporis.xamarin.forms.colorpicker 上扩展),我想将其用作其他设置页面的基础(在我想要颜色方案选择器和其他设置的应用程序中)出色地)。我有一个类库 CSettings,如果直接加载的话,CSettingsPage 加载得很好(其中包括 Content=SettingsGrid,所有内容都首先加载到其中) - 一切都是“公共”的。然后我有一个 TestBed 应用程序,并尝试创建一个 TBSettingsPage。在顶部我有namespace TestBed {    public class TBSettingsPage : CSettingsPage {...(当然我已经引用了 DLL),并且我已经使用构造函数尝试了以下 3 种变体...public TBSettingsPage():base() {}public TBSettingsPage():base() { Content=SettingsGrid; }public TBSettingsPage() { Content=SettingsGrid; }每次我得到...“抛出异常:Xamarin.Forms.Platform.UAP.dll 中的‘System.Runtime.InteropServices.COMException’错误 HRESULT E_FAIL 已从对 COM 组件的调用返回。” 在 Xamarin.Forms 初始化处。...这不是一个非常有用的错误消息。它基本上说“那是不对的”,但没有告诉我什么是不对的,也没有告诉我如何解决它(谷歌搜索它会出现各种各样的情况,其中没有一个适用于我想做的事情)。:-(谁能告诉我如何从已有视图的 BasePage 中派生?(我看到了一个关于在页面构建完成之前使其不可见的提示,然后使其可见,但这没有帮助)。或者给我指出一个实现这样的事情的例子?注意:我的 UI 使用 C#,而不是 XAML。如果相关的话,这也在 UWP 中。谢谢,唐纳德。根据要求,这是来自 OnLaunched 的代码protected override void OnLaunched(LaunchActivatedEventArgs e) {        Frame rootFrame = Window.Current.Content as Frame;        // Do not repeat app initialization when the Window already has content,        // just ensure that the window is active        if (rootFrame == null)        {            // Create a Frame to act as the navigation context and navigate to the first page            rootFrame = new Frame();            rootFrame.NavigationFailed += OnNavigationFailed;            Xamarin.Forms.Forms.Init(e);            if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)            {                //TODO: Load state from previously suspended application            }            // Place the frame in the current Window            Window.Current.Content = rootFrame;        }
查看完整描述

1 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

所以我最终发现这都是由于 UWP 中的一个错误给我带来了一个红鲱鱼 - 请参阅https://github.com/xamarin/Xamarin.Forms/issues/9335。正确的语法是我说的第一个语法 - 即public TBSettingsPage():base() {}- 但 UWP 错误阻止我看到它是正确的(因为我的应用程序仍然崩溃)。值得庆幸的是,这个错误现在正在修复中,既然我知道了正确的语法,我就可以继续编码了。:-)



查看完整回答
反对 回复 2023-09-16
  • 1 回答
  • 0 关注
  • 48 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信