.NET MAUI 中的边框和框架之间的功能区别是什么?
根据文档,边界的摘要是
.NET 多平台应用程序 UI (.NET MAUI) 边框是一个容器控件,可在另一个控件周围绘制边框、背景或两者。一个边框只能包含一个子对象。如果要在多个对象周围放置边框,请将它们包装在容器对象(例如布局)中。
而一个Frame的总结如下
.NET 多平台应用程序 UI (.NET MAUI) Frame 类用于使用可配置颜色、阴影和其他选项的边框来包装视图或布局。框架可用于创建控件周围的边框,但也可用于创建更复杂的 UI。
听起来他们都对我做了同样的事情:在另一个视图周围绘制边框(无论是布局还是单个控件并不重要)。那么为什么会有两种不同的观点呢?我如何决定使用哪一个?
我是一个使用页面的向导样式应用程序,用户可以通过下一个和上一个按钮或通过使用导航栏直接访问某些页面在它们之间导航。
在一个页面上(我将其称为“网格页面”),我将一个 DataGrid 绑定到一个 DataTable。DataTable 中有一些初始数据,但用户可以使用 DataGrid 随意添加、编辑和删除行。在下一页(我将称之为“组合框页面”)有一个 ComboBox,它与网格页面上的 DataGrid 绑定到相同的 DataTable。两个页面都使用相同的对象作为数据上下文。
如果我直接跳转到组合框页面,一切正常,组合框在 DataTable 中的每一行都有一个条目,就像它应该的那样。现在我导航到网格页面,不要触摸那里的任何东西,然后再次转到组合框页面。现在 ComboBox 显示一个新项目,一个 NewItemPlaceholder。显然,这是因为 DataGrid 将 UserCanAddRows 设置为 true,从而为新项目显示占位符行。但这应该只涉及 DataGrid 而不是绑定的 DataTable,所以在我看来这是一个错误,或者至少是一个绝对可怕的设计。
当然,我不想在我的 ComboBox 中使用 NewItemPlaceholder(并且选择它会导致很多问题)。那么如何防止它显示在 ComboBox 中呢?
更新:与此同时,我发现占位符项目不在 DataTable 中作为一行,这使它变得更加奇怪,除非 DataTable 中有一个标志说“此表中有一个 NewItemPlaceholder”但不是一行本身。此外,当我注册到 ComboBox 的 Initialized 事件时,我有我正在寻找的 2 个项目,当我注册到 Loaded 事件时,我也有 NewItemPlaceholder,因此必须将它添加到这两个事件之间的某个位置。
我想在来自自托管构建服务器的 Azure Devops 发布管道中从 powershell 脚本执行 git push 。
它在构建管道中工作,但从发布管道中我最终遇到身份验证错误。“允许脚本访问 OAuth 令牌”已激活,并且构建机器具有贡献权限(正如我所说,它在构建管道中工作)。
这是我在 devops protal 中看到的错误:
git : remote: 001f# service=git-receive-pack
At C:\Builds\A1\_work\r1\a\Source\Scripts\CreateTagFromPipeline.ps1:11 char:1
+ git push
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (remote: 001f# service=git-receive-pack:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
PowerShell exited with code '1'.
Run Code Online (Sandbox Code Playgroud)
如果我通过远程桌面登录到机器并手动推送,我会得到一些更好的错误:
$ git push
remote: 001f# service=git-receive-pack
remote: 0000000000aaTF401027: You need the Git 'GenericContribute' permission to perform this action. Details: identity 'Build\58bb64d7-d065-4522-94e2-a153b9fdadd6', scope 'repository'.
remote: TF401027: You need the Git 'GenericContribute' permission to …Run Code Online (Sandbox Code Playgroud)