问题标签 [wpf-core]

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 投票
1 回答
514 浏览

c# - 如何在 WPF Core 应用程序中“添加新数据源”?

问题:如何在 WPF Core 应用程序中“添加新数据源”?  
我执行了:
 - 创建了一个 WPF Core 应用程序;
 - 增加了课程CntDBSchool
 - 增加了课程Student
 - Menu Project//“添加新数据源”;
 - 结果:没有课程Student
  在此处输入图像描述

在此处输入图像描述

CntDBSchool

Student

  Student

    当我在 WPF 框架应用程序中执行相同操作时,Student 类出现在“添加新数据源”窗口中。
我这样做:
 - 创建了一个 WPF 框架应用程序;
 - 创建Model ADO.NET EDM
 - 在文件中DBModel.tt替换:
 - 行 - 296 替换ICollectionObservableCollection;
 - 行 - 484 替换ICollectionObservableCollection;
 -- 第 51 行替换HashSetObservableCollection;
 - - 行 - 431 替换System.Collections.GenericSystem.Collections.ObjectModel;
 - Menu Project//“添加新数据源”;
 - 结果:课程Student在场;
在此处输入图像描述 在此处输入图像描述

0 投票
0 回答
74 浏览

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

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

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

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

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

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

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

0 投票
0 回答
46 浏览

wpf - 在 wpf 应用程序中删除 shift+space 上的网格列

我有一个简单的 wpf 应用程序,我想在其中删除一列,并在按下 ctrl+空格时让剩余的(在第 2 列中)填充窗口。我已经研究了键绑定和命令,但我无法弄清楚这一点。

代码

0 投票
2 回答
1217 浏览

c# - WPF Core - App.config 中的连接字符串不起作用

面对上述问题时,甚至遵循了Connection Strings - EF Core的简单演练,但发现在将连接字符串硬编码为:

导致成功,使用插入 App.config 文件的推荐方法,例如:

并将主代码更新为:

不成功,并且在执行迁移时遇到以下错误:

背后的原因可能是什么?

提前感谢您的审阅和回复。

0 投票
1 回答
122 浏览

wpf - .net core WPF 依赖注入

我是 WPF 新手,我创建了一个简单的 WPF 应用程序,它有一个按钮,单击该按钮将从数据库中获取数据并在文本框中提供输出。

我在依赖注入中有一个问题,数据库有 AppDBContext 类,而 logMessageService.cs 具有从数据库中获取数据的功能。

我收到错误“在类型'MainWindow'上找不到匹配的构造函数”

如何在 WPF 中执行依赖注入?

0 投票
0 回答
1184 浏览

c# - .NET core 3.0 和 MS Office Interop 在某些情况下无法协同工作

我正在使用WPF .NET Core 3.1应用程序来自动化Microsoft WORD. 我们知道Office COM引用不适用于 .NET Core 3.1。但是有一种解决方法,如此处所述或此处官方 .NET Core Excel 示例中的部分所述或此处解释其他解决方法。Note

上述解决方法几乎适用于我的WPF Core 3.1应用程序的所有WORD自动化情况,除了在某些情况下,例如下面显示的情况,我在代码的最后一行收到以下错误:

代码

错误

System._ComObject 不包含 NameLocal 的定义

备注:我在 WPF 应用程序中的类似项目中不会出现上述错误.NET FullNetwork。并且在那里它正确地显示该段落的值,oDoc.Paragraphs[1].get_Style().NameLocal好像Normal该段落是一个普通段落,或者它显示,例如,Heading 1如果段落是一个标题 1 等。

问题:上述WPF .NET Core 3.1应用程序中的错误可能是什么原因,我们该如何解决?

0 投票
2 回答
877 浏览

c# - DataGrid CellEditEnding 事件未在 DataGridTemplateColumn 内的单元格编辑上触发

在这种情况MyDatagrid_CellEditEnding(...)下(如下所示),每当用户编辑三列之一的单元格时,我都会捕获单元格的编辑值。在第二列或第三列中编辑单元格后,当我移出该单元格时,我可以看到CellEditEnding事件被调用。但对于作为列的第一列来说,情况并非如此DataGridTemplateColumn。也就是说,当我在 first 中的任何单元格中更改日期DataGridTemplateColumn并将光标移出单元格时,CellEditEnding不会调用该事件。

问题:我可能在这里遗漏了什么,我们怎样才能让它发挥作用?我在网上看到过类似的问题及其解决方案(例如thisthis),所以我不确定我可能在这里遗漏了什么。

注意:我使用的是VS2019最新.NET Core 3.1版本Windows 10 vs1903 - Pro

代码

0 投票
1 回答
949 浏览

wpf - 如何在 .Net Core 中引用 System.Windows 命名空间?

我是一名长期的 WPF(.Net 框架)开发人员,终于第一次涉足 .Net Core。我目前正在尝试将小型 v4.7.2 WPF 应用程序转换为 .Net Core 3.1。该解决方案包含一个 WPF 应用程序项目和一个类库项目,每个项目只有几个类,因此我决定创建一个包含 WPF 应用程序和类库项目(均为 .Net Core 3.1)的新解决方案会更容易,然后从原始解决方案中复制 cs 和 xaml 文件。但是我似乎在第一个障碍上掉下来了......

许多类使用System.Windows命名空间中的类型(和System.Windows.Media、、System.Windows.Controls等)。这些在 WPF 应用程序项目中解决得很好,但在类库中却没有。我注意到 WPF 应用程序项目引用了框架“Microsoft.WindowsDesktop.App.Wpf”,但类库项目没有,我认为这是我的问题。但是,我一生都无法弄清楚如何将此框架添加到项目中。我该怎么做?!

我在其他地方看到了添加<UseWPF>true</UseWPF>到类库 csproj 文件的解决方案,但这没有效果。