问题标签 [fody-propertychanged]

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 投票
0 回答
98 浏览

xamarin - 如何从 UWP 包中排除 Fody 的 PropertyChanged.dll?

我们在 Xamarin 项目上使用 Fody.PropertyChanged 效果很好,但是当我们尝试将包上传到商店时它拒绝它,因为它说:

调试配置测试检测到以下错误: 二进制 PropertyChanged.dll 在调试模式下构建。

根据此链接,软件包中不需要 dll,但它仍然包含在其中...

我也看到了这个没有答案的链接。

我们正在使用 PropertyChanged 2.1.1 我们的核心项目是 SharedProject 而不是 PCL,因此必须将 PropertyChanged 导入 UWP 项目中,但不应将其包含在部署包中。

谢谢!

0 投票
1 回答
344 浏览

xamarin.android - Mobile Center 是 Xamarin 构建失败并出现 pthread_mutex_lock 错误

我正在使用 Visual Studio App Center 将 Xamarin.Forms 应用程序构建到 Xamarin.Android 中。该应用程序在我的机器上的开发和发布配置中构建良好,但是当我尝试在 Mobile Center 上构建时,构建几乎完成(即 MSBuild 阶段),但随后出现此致命错误:

0 投票
1 回答
444 浏览

fody-propertychanged - Fody PropertyChanged 设置器逻辑

Fody(MvvmCross 应用程序)中有没有办法改变这一点:

变成更优雅的东西,例如:

PropertyChanged 引发后如何拦截和调用 Recalculate() 方法?

0 投票
0 回答
298 浏览

mvvm-light - 与 MVVMLight 一起使用时,Fody.Propertychanged 阻止编辑并继续

我知道使用 AOP 工具可能/应该干扰编辑并继续编织的类。但是我有一个案例,如果项目中有一个从 ObservableObject 继承的类,那么在同一个项目中简单地使用 MVVMLight 和 Fody.PropertyChanged 会阻止编辑和继续。

为了重现,我只是在 VS 2017 Update 3 中创建了一个 WPF 4.6.2 项目(发生在所有更新中),添加对 MVVMLight 和 Fody.PropertyChanged 的​​ nuget 引用,然后我无法编辑和继续这样的简单代码:

错误是:

CS7038 无法发出模块“WithFodyPropertyChangedAndMvvmLight”。

如果我从 FodyWeavers.xml 文件中删除 PropertyChanged 标记,问题就会消失。如果我不使用 MVVMLight 而只是:

它工作正常。所以它看起来特定于 MVVMLight。

有人见过这个吗?谢谢!

0 投票
1 回答
991 浏览

c# - 使用 MVVM,如何在集合被修改时通知其他属性和命令

在用 C# 和 Xamarin Forms 编写的程序中(但这个问题更多地基于 MVVM),我有一个 ObservableCollection 项目:

当此集合更改时(向集合添加或删除项目),我需要通知其他属性和命令,因为它们都绑定到 XAML 屏幕上的控件(主要是按钮和标签)。

我找到的唯一解决方案是这样的:

您认为还有其他解决方案吗?也许使用 Fody.PropertyChanged?

我使用 FreshMvvm 作为 Xamarin Forms 之上的 Mvvm 框架。

0 投票
2 回答
1190 浏览

c# - UWP 应用程序未更新视图

一个简单的练习:在 UWP 应用的文本块中显示当前时间。我正在使用 MVVMlight 和 PropertyChanged.Fody。

作为这个例子的基础,我使用这篇文章 1和这里的 MVVMlight / Fody 实现:Article 2

我有一个 MainViewModel。在这里,我正在创建 DateTimeModel 类的一个实例,并且如果引发了属性更改事件(工作),我已经添加了一个 Debug 输出。

还有一个 DateTimeModel 类,我使用 ThreadPoolTimer 更新时间:

XAML 代码如下所示:

这里的问题是 UI 没有更新,而 propertyChanged 事件正在引发。我在这里缺少什么?

编辑:如果我使用 CurrentDateTime 作为标准属性:

并在构造函数中分配当前 DateTime 绑定有效。

0 投票
0 回答
58 浏览

.net - UnitOfWork 抽象背后的 EF - 获取插入的 id(再一次)

在我的解决方案中,EntityFramework 上下文在没有使用存储库模式的 UnitOfWork 的情况下被抽象的原因有很多,例如:

  • 数据库优先方法(edmx 和自动生成的实体)
  • 纯 ADO 和 EF 实现
  • 域和数据库模式分离

所以我想出了一个问题,我需要添加两个相关实体,但不幸的是 DB 模式没有为该关系提供外键。假设它是CustomerAddress关系。因此,这使我无法使用正常的 EF 功能将这些实体“一次性”存储在 db 中。这意味着我需要先存储,Customer然后我需要从第一次插入开始存储。AddressCustomerID

我遇到的问题是,当我将域模型传递到 UnitOfWork 存储库时

我无法将CustomerID其传递给下一个数据库请求。我真的不想通过在存储库方法中调用.SaveChanges()EF 上下文来打破这种模式。.Add

经过一番调查,我发现在这种情况下,我能得到的最好的办法是将这个过程包装到事务中(这迫使我efcontext.SaveChanges()在 Repository 方法中使用),但UnitOfWork.SaveChanges()实际上会提交整个事务。

但我还发现了另一种在任何 SO 答案中从未见过的方法。如果有任何方法可以“通知”域模型关于自动生成的类CustomerID中的属性更改,我正在调查。Customer还有一个库可以帮助解决这个问题:https ://github.com/Fody/PropertyChanged

自动生成的 EF 类被定义为partial这使我能够编写:

然后.Add方法:

由于我没有修改任何自动生成的代码,我没有严重破坏 UoW 模式,并且我能够在外部提供插入的 ID。

但我的问题是,我不确定这种方法是否可以接受,也不确定使用哪种方法(交易或 Fody)。也许这个问题还有更多的解决方案?

0 投票
1 回答
391 浏览

data-binding - 领域对象的嵌套属性更改通知

我在我的 Xamarin Forms 项目中使用 Realm 和 PropertyChanged Fody。我有两个模型 -Person如下Friend所示。该person对象具有对该对象的引用friend。我已将Agetheperson和 the绑定friend到两个单独的标签。现在,正如我使用的那样PropertyChanged Fody,每当Age发生更改时,它都应该更新标签。但只有第一个标签(人的年龄)更新,第二个(人的朋友的年龄)没有。当朋友的年龄发生变化时如何发出通知?

我将它们绑定在 Xaml 中,如下所示。

0 投票
3 回答
1741 浏览

c# - PropertyChanged 没有按预期工作

我目前正在尝试使用更改的 Fody 属性创建一个带有 MVVM 的 WPF 项目。

基本上,当我单击按钮时,我希望 TextBlock 显示“测试”文本。Click-Command 被执行,但 TextBlock 的文本没有改变。我想使用属性 Text 作为本地内存,使文本块保持最新,以便稍后将值发送到 model.text 并在那里使用它。但它只有在我使用我当前注释掉的代码时才有效。fody weaver 不应该为我做同样的事情吗(只是他创建了另一个私有变量而不是使用 model.text)?

0 投票
1 回答
651 浏览

c# - Fody 在我的 MVVM WPF 项目中安装后抛出错误

我正在尝试基于 MVVM 项目使用 WPF 构建应用程序。在学习的过程中,我发现必须为每个属性实现 getter/setter 以通知视图更改是很乏味的。那是我了解福迪的时候

我尝试使用以下 2 个命令安装软件包

在这Install-Package PropertyChanged.Fody一步中,我收到以下警告

一个或多个包无法完全卸载:Fody.2.4.1。重新启动 Visual Studio 以完成卸载。

然后在这Update-Package Fody一步中,我收到以下警告

卸载“Fody 2.3.20”。拒绝访问路径“C:\WinProjects\Proj1\packages\Fody.2.3.20\netclassictask\Fody.dll”。拒绝访问路径“C:\WinProjects\Proj1\packages\Fody.2.3.20\netclassictask\FodyCommon.dll”。拒绝访问路径“Fody.dll”。成功卸载“Fody 2.3.20”。一个或多个包无法完全卸载:Fody.2.3.20。重新启动 Visual Studio 以完成卸载。

我尝试以管理员身份运行 Visual Studio,但这也导致我得到相同的结果。

现在,当我构建这个项目时,我收到以下错误

无法从程序集 C:\WinProjects\Proj1\packages\Fody.2.4.1\build..\netclassictask\Fody.dll 加载“Fody.WeavingTask”任务。无法加载文件或程序集“Microsoft.Build.Utilities.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。该系统找不到指定的文件。确认声明正确,程序集及其所有依赖项都可用,并且任务包含实现 Microsoft.Build.Framework.ITask 的公共类。Windows客户端

我怎么解决这个问题?