问题标签 [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.

0 投票
1 回答
352 浏览

wpf - ef.net 核心,属性而不是字段

因此,我们将一个旧的 wpf 应用程序移植到 .net core wpf 中。作为努力的一部分,我们还将数据层移动到EF.net core.

  1. 由于我们使用 Prism MVVM,在 DI 服务上下文中,我们保留了一个实时数据上下文,它跟踪用户通过 wpf 前端和服务显示和编辑的实体。
  2. 为了实现“撤消”功能,我们使用跟踪对象 entity.HasChangeTrackingStrategy(ChangeTrackingStrategy.ChangingAndChangedNotificationsWithOriginalValues);

在编辑时,对象会更新,在 Reload() 时,它会从跟踪的原始值恢复。就对象而言,操作还可以,但是,wpf 方面却无法正常工作。似乎 ef.net 核心是 wpf 应用程序的一个非常不适应的公民,假设它是 INotifyPropertyChanged 机制的唯一受益者。当然,这对于 WPF 来说一点也不真实。

  1. EF.net 在加载、重新加载等时似乎不使用属性。它直接在基础字段上工作。因此,NotifyPropertyChanged 永远不会触发,因此网格永远不会用新数据刷新,比如dbContext.Entry(c).Reload();. 所以问题 #1,有没有办法强制 ef.net 使用属性而不是字段?
  2. ef.net 的实现INotifyPropertyChanged似乎有缺陷。如果您在属性上调用 PropoertyChanged 事件,而不实际更改它,它会将实体标记为Modified,即使它可以轻松比较原始值和当前值。这禁止我们手动引发属性更改事件来控制 WPF 呈现。不知道如何解决这个问题,或者它是否可以解决,因为它只适用于这个跟踪策略。我愿意接受任何关于如何在不激怒 ef.net 的情况下通知 WPF 元素的建议。
  3. 确定对象的状态是相当复杂的操作,涉及的操作dbContext.Entry(entry).State存在于DataContext层次结构内的任何 WPF 绑定之外。它使绑定状态几乎不可能(例如更改脏条目的背景或显示保存按钮等)。NotifySetterObject我们通过从处理INotify*实现并保留[NotMapped] bool IsDirty标志的基类继承我们所有的实体类来“解决”它。不用说,我非常不喜欢这样,保留两个未链接的州旗听起来像是一场等待发生的事故。我想知道您是否遇到过类似的问题,以及您是否设计了一个更好、更理智的解决方案。

EF.net 似乎经历了从框架 ef.net 的重大变革转变,因为它只非常适合分离的上下文场景(如 asp.net)。我们是不是在浪费时间试图把这双鞋穿在 wpf 上?我们是否应该专注于更适合现场环境的不同 OR 引擎?

0 投票
3 回答
3182 浏览

c# - .net core 3 wpf/winforms(非 MSIX)的安装程序?

因此,我们完成了一些到 .net 核心的 wpf 转换,现在我们需要将一个作为安装程序发送给外部客户端。以前我们使用 ClickOnce,但在 .net 核心中已弃用,不会根据 MS 移植,他们推荐 MSIX。但是,正如我们从文档中了解到的那样,即使我们将旁加载 WPF 应用程序,它仍将在具有虚拟化文件系统的沙箱中运行。这对我们来说是不行的,它显然是在设计时考虑了 UWP+Marketplace 交付。我们需要文件系统上的应用程序具有对文件系统的完全访问权限,即“旧方法”。

我们可以将它们作为 zip 文件发送并让客户解包,但管理层认为这不太专业,因此我们需要一个类似于 msi/clickonce 的交付包。有没有人在 MSIX 之外的核心上交付应用程序?

0 投票
0 回答
74 浏览

c# - 无法向自定义控件添加内容

我正在尝试创建一个自定义版本,UserControl以便在加载时为视图实现一些标准动画。

但是当我添加一个时,ContentPresenter我无法将内容添加到我的控件中。为什么呢?

这是我用于自定义控件的模板。

以及自定义控件的默认代码

这就是我尝试使用它的方式。

当我删除它时,Grid它工作得很好。

0 投票
2 回答
1026 浏览

c# - 在 WPF dotnet 核心项目中托管 Razor 页面和 API (AspnetCore)

dotnet core 3 出来了!所以,我需要在 WPF 应用程序中托管 aspnetcore。

尝试了这种方法,但是由于 VS 使用 csprojProject节点来确定输出,所以它不起作用。

有两个 nuget 包引起了我的注意:

但不知道如何在 WPF 上实现这一点:(

有什么线索吗?

0 投票
2 回答
2379 浏览

c# - 带有 WPF 核心的实体框架核心 - 无法添加迁移

最近我将我的 WPF 应用程序 (.NET 4.7) 迁移到了 .Net Core 3.1。除了我无法生成/添加 EF Core 迁移之外,大部分都可以正常工作。

dbContext我使用依赖注入在以下帖子的帮助下集成了我的/ EF Core:

数据库连接并正常工作。但是,当我尝试通过键入以下命令来添加迁移时:Add-Migration InitialMigration我不断收到以下错误:

无法创建“MyDBContext”类型的对象。有关设计时支持的不同模式,请参阅https://go.microsoft.com/fwlink/?linkid=851728

在 Web 应用程序中,这似乎是一个常见/已知问题,可以通过在程序类中更改CreateHostBuilder为来解决;BuildWebHosthttps://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

有什么线索哪里出错了吗?

0 投票
1 回答
49 浏览

c# - 有没有办法使用 WPF xaml 代码创建数字文本框?

我是 WPF 的新手。我需要创建只接受数字的文本框。不接受任何特殊字符、字母。

重要的是,代码只是 xaml 而不是 c#

我用谷歌搜索了很多网站,但我只得到了使用 c# 的代码。但我想要 XAML 代码。因为我将它像控件中的样式一样包含在内。

有没有办法做到这一点?如果不可能,为什么?

0 投票
4 回答
3457 浏览

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?

0 投票
1 回答
102 浏览

c# - 如何使 WPF 按钮振动?

我正在构建一个包含多个按钮的 Windows WPF 应用程序。我想通知用户,如果用户单击其他地方并且没有加载 pdf,则他应该先加载 pdf,然后才能通过使加载 pdf 按钮闪烁/振动来按下其他按钮。

例如 - 如果您在打开编辑颜色框时尝试单击编辑颜色框之外的任何位置,则会在 Microsoft Paint 上发生确切的行为。(见附图)

有人有想法吗?

在此处输入图像描述