问题标签 [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.
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# - 如何在 WPF Core 应用程序中“添加新数据源”?
问题:如何在 WPF Core 应用程序中“添加新数据源”?
我执行了:
- 创建了一个 WPF Core 应用程序;
- 增加了课程CntDBSchool
;
- 增加了课程Student
;
- Menu Project
//“添加新数据源”;
- 结果:没有课程Student
;
类CntDBSchool
。
类Student
。
表Student
。
当我在 WPF 框架应用程序中执行相同操作时,Student 类出现在“添加新数据源”窗口中。
我这样做:
- 创建了一个 WPF 框架应用程序;
- 创建Model ADO.NET EDM
;
- 在文件中DBModel.tt
替换:
- 行 - 296 替换ICollection
为ObservableCollection
;
- 行 - 484 替换ICollection
为ObservableCollection
;
-- 第 51 行替换HashSet
为ObservableCollection
;
- - 行 - 431 替换System.Collections.Generic
为System.Collections.ObjectModel
;
- Menu Project
//“添加新数据源”;
- 结果:课程Student
在场;
c# - 无法向自定义控件添加内容
我正在尝试创建一个自定义版本,UserControl
以便在加载时为视图实现一些标准动画。
但是当我添加一个时,ContentPresenter
我无法将内容添加到我的控件中。为什么呢?
这是我用于自定义控件的模板。
以及自定义控件的默认代码
和
这就是我尝试使用它的方式。
当我删除它时,Grid
它工作得很好。
wpf - 在 wpf 应用程序中删除 shift+space 上的网格列
我有一个简单的 wpf 应用程序,我想在其中删除一列,并在按下 ctrl+空格时让剩余的(在第 2 列中)填充窗口。我已经研究了键绑定和命令,但我无法弄清楚这一点。
代码:
c# - WPF Core - App.config 中的连接字符串不起作用
面对上述问题时,甚至遵循了Connection Strings - EF Core的简单演练,但发现在将连接字符串硬编码为:
导致成功,使用插入 App.config 文件的推荐方法,例如:
并将主代码更新为:
不成功,并且在执行迁移时遇到以下错误:
背后的原因可能是什么?
提前感谢您的审阅和回复。
wpf - .net core WPF 依赖注入
我是 WPF 新手,我创建了一个简单的 WPF 应用程序,它有一个按钮,单击该按钮将从数据库中获取数据并在文本框中提供输出。
我在依赖注入中有一个问题,数据库有 AppDBContext 类,而 logMessageService.cs 具有从数据库中获取数据的功能。
我收到错误“在类型'MainWindow'上找不到匹配的构造函数”
如何在 WPF 中执行依赖注入?
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
应用程序中的错误可能是什么原因,我们该如何解决?
c# - DataGrid CellEditEnding 事件未在 DataGridTemplateColumn 内的单元格编辑上触发
在这种情况MyDatagrid_CellEditEnding(...)
下(如下所示),每当用户编辑三列之一的单元格时,我都会捕获单元格的编辑值。在第二列或第三列中编辑单元格后,当我移出该单元格时,我可以看到CellEditEnding
事件被调用。但对于作为列的第一列来说,情况并非如此DataGridTemplateColumn
。也就是说,当我在 first 中的任何单元格中更改日期DataGridTemplateColumn
并将光标移出单元格时,CellEditEnding
不会调用该事件。
问题:我可能在这里遗漏了什么,我们怎样才能让它发挥作用?我在网上看到过类似的问题及其解决方案(例如this和this),所以我不确定我可能在这里遗漏了什么。
注意:我使用的是VS2019
最新.NET Core 3.1
版本Windows 10 vs1903 - Pro
代码:
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 文件的解决方案,但这没有效果。