问题标签 [wpf-core-3.0]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
wpf - ef.net 核心,属性而不是字段
因此,我们将一个旧的 wpf 应用程序移植到 .net core wpf 中。作为努力的一部分,我们还将数据层移动到EF.net core
.
- 由于我们使用 Prism MVVM,在 DI 服务上下文中,我们保留了一个实时数据上下文,它跟踪用户通过 wpf 前端和服务显示和编辑的实体。
- 为了实现“撤消”功能,我们使用跟踪对象
entity.HasChangeTrackingStrategy(ChangeTrackingStrategy.ChangingAndChangedNotificationsWithOriginalValues);
在编辑时,对象会更新,在 Reload() 时,它会从跟踪的原始值恢复。就对象而言,操作还可以,但是,wpf 方面却无法正常工作。似乎 ef.net 核心是 wpf 应用程序的一个非常不适应的公民,假设它是 INotifyPropertyChanged 机制的唯一受益者。当然,这对于 WPF 来说一点也不真实。
- EF.net 在加载、重新加载等时似乎不使用属性。它直接在基础字段上工作。因此,NotifyPropertyChanged 永远不会触发,因此网格永远不会用新数据刷新,比如
dbContext.Entry(c).Reload();
. 所以问题 #1,有没有办法强制 ef.net 使用属性而不是字段? - ef.net 的实现
INotifyPropertyChanged
似乎有缺陷。如果您在属性上调用 PropoertyChanged 事件,而不实际更改它,它会将实体标记为Modified
,即使它可以轻松比较原始值和当前值。这禁止我们手动引发属性更改事件来控制 WPF 呈现。不知道如何解决这个问题,或者它是否可以解决,因为它只适用于这个跟踪策略。我愿意接受任何关于如何在不激怒 ef.net 的情况下通知 WPF 元素的建议。 - 确定对象的状态是相当复杂的操作,涉及的操作
dbContext.Entry(entry).State
存在于DataContext
层次结构内的任何 WPF 绑定之外。它使绑定状态几乎不可能(例如更改脏条目的背景或显示保存按钮等)。NotifySetterObject
我们通过从处理INotify*
实现并保留[NotMapped] bool IsDirty
标志的基类继承我们所有的实体类来“解决”它。不用说,我非常不喜欢这样,保留两个未链接的州旗听起来像是一场等待发生的事故。我想知道您是否遇到过类似的问题,以及您是否设计了一个更好、更理智的解决方案。
EF.net 似乎经历了从框架 ef.net 的重大变革转变,因为它只非常适合分离的上下文场景(如 asp.net)。我们是不是在浪费时间试图把这双鞋穿在 wpf 上?我们是否应该专注于更适合现场环境的不同 OR 引擎?
c# - .net core 3 wpf/winforms(非 MSIX)的安装程序?
因此,我们完成了一些到 .net 核心的 wpf 转换,现在我们需要将一个作为安装程序发送给外部客户端。以前我们使用 ClickOnce,但在 .net 核心中已弃用,不会根据 MS 移植,他们推荐 MSIX。但是,正如我们从文档中了解到的那样,即使我们将旁加载 WPF 应用程序,它仍将在具有虚拟化文件系统的沙箱中运行。这对我们来说是不行的,它显然是在设计时考虑了 UWP+Marketplace 交付。我们需要文件系统上的应用程序具有对文件系统的完全访问权限,即“旧方法”。
我们可以将它们作为 zip 文件发送并让客户解包,但管理层认为这不太专业,因此我们需要一个类似于 msi/clickonce 的交付包。有没有人在 MSIX 之外的核心上交付应用程序?
c# - 无法向自定义控件添加内容
我正在尝试创建一个自定义版本,UserControl
以便在加载时为视图实现一些标准动画。
但是当我添加一个时,ContentPresenter
我无法将内容添加到我的控件中。为什么呢?
这是我用于自定义控件的模板。
以及自定义控件的默认代码
和
这就是我尝试使用它的方式。
当我删除它时,Grid
它工作得很好。
c# - 在 WPF dotnet 核心项目中托管 Razor 页面和 API (AspnetCore)
dotnet core 3 出来了!所以,我需要在 WPF 应用程序中托管 aspnetcore。
尝试了这种方法,但是由于 VS 使用 csprojProject
节点来确定输出,所以它不起作用。
有两个 nuget 包引起了我的注意:
和
但不知道如何在 WPF 上实现这一点:(
有什么线索吗?
c# - 带有 WPF 核心的实体框架核心 - 无法添加迁移
最近我将我的 WPF 应用程序 (.NET 4.7) 迁移到了 .Net Core 3.1。除了我无法生成/添加 EF Core 迁移之外,大部分都可以正常工作。
dbContext
我使用依赖注入在以下帖子的帮助下集成了我的/ EF Core:
- https://marcominerva.wordpress.com/2019/03/06/using-net-core-3-0-dependency-injection-and-service-provider-with-wpf/
- https://marcominerva.wordpress.com/2019/03/19/using-entity-framework-core-with-wpf-on-net-core-3-0/
数据库连接并正常工作。但是,当我尝试通过键入以下命令来添加迁移时:Add-Migration InitialMigration
我不断收到以下错误:
无法创建“MyDBContext”类型的对象。有关设计时支持的不同模式,请参阅https://go.microsoft.com/fwlink/?linkid=851728
在 Web 应用程序中,这似乎是一个常见/已知问题,可以通过在程序类中更改CreateHostBuilder
为来解决;BuildWebHost
https://stackoverflow.com/questions/57745481/unable-to-create-an-object-of-type-mycontext-for-the-different-patterns-suppo
MigrationsAssembly
我还通过添加找到了其他一些帖子options.UseSqlServer
。
长话短说,我尝试了所有这些解决方案,但似乎都没有奏效。可能是因为我的应用程序不是 Web 应用程序(没有程序类,例如 BuildWebHost),而是 WPF(核心)应用程序。
我的 WPF 应用程序的初始化代码如下所示:
应用程序.xaml.cs
MyDbContext.cs
有什么线索哪里出错了吗?
c# - 有没有办法使用 WPF xaml 代码创建数字文本框?
我是 WPF 的新手。我需要创建只接受数字的文本框。不接受任何特殊字符、字母。
重要的是,代码只是 xaml 而不是 c#。
我用谷歌搜索了很多网站,但我只得到了使用 c# 的代码。但我想要 XAML 代码。因为我将它像控件中的样式一样包含在内。
有没有办法做到这一点?如果不可能,为什么?
c# - Microsoft.ReportViewer.WinForms.V15 与 .NET Core 3.1 不兼容 - 如何在 WPF Core 中显示 RDLC?
我有 wpf core 3.1 项目并在 VS 2019 上安装了Microsoft RDLC Report Designer扩展并创建了一个 rdlc 文件。现在我想在窗口中显示 rdlc 但没有 ReportViewer 控件。我从 nuget 安装了Microsoft.ReportViewer.WinForms v15 包,但它显示错误:
“使用 '.NETFramework,Version=v4.6.1, .NETFramework,Version=v4.6.2, .NETFramework,Version=v4.7, .NETFramework,Version=v4.7.1, 恢复包 'Microsoft.ReportViewer.WinForms'。 NETFramework,Version=v4.7.2, .NETFramework,Version=v4.8' 而不是项目目标框架 '.NETCoreApp,Version=v3.1'。此包可能与您的项目不完全兼容。”
我们如何在 wpf 核心中显示 rdlc?