问题标签 [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.
xamarin.android - Mobile Center 是 Xamarin 构建失败并出现 pthread_mutex_lock 错误
我正在使用 Visual Studio App Center 将 Xamarin.Forms 应用程序构建到 Xamarin.Android 中。该应用程序在我的机器上的开发和发布配置中构建良好,但是当我尝试在 Mobile Center 上构建时,构建几乎完成(即 MSBuild 阶段),但随后出现此致命错误:
fody-propertychanged - Fody PropertyChanged 设置器逻辑
Fody(MvvmCross 应用程序)中有没有办法改变这一点:
变成更优雅的东西,例如:
PropertyChanged 引发后如何拦截和调用 Recalculate() 方法?
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。
有人见过这个吗?谢谢!
c# - 使用 MVVM,如何在集合被修改时通知其他属性和命令
在用 C# 和 Xamarin Forms 编写的程序中(但这个问题更多地基于 MVVM),我有一个 ObservableCollection 项目:
当此集合更改时(向集合添加或删除项目),我需要通知其他属性和命令,因为它们都绑定到 XAML 屏幕上的控件(主要是按钮和标签)。
我找到的唯一解决方案是这样的:
您认为还有其他解决方案吗?也许使用 Fody.PropertyChanged?
我使用 FreshMvvm 作为 Xamarin Forms 之上的 Mvvm 框架。
c# - UWP 应用程序未更新视图
一个简单的练习:在 UWP 应用的文本块中显示当前时间。我正在使用 MVVMlight 和 PropertyChanged.Fody。
作为这个例子的基础,我使用这篇文章 1和这里的 MVVMlight / Fody 实现:Article 2
我有一个 MainViewModel。在这里,我正在创建 DateTimeModel 类的一个实例,并且如果引发了属性更改事件(工作),我已经添加了一个 Debug 输出。
还有一个 DateTimeModel 类,我使用 ThreadPoolTimer 更新时间:
XAML 代码如下所示:
这里的问题是 UI 没有更新,而 propertyChanged 事件正在引发。我在这里缺少什么?
编辑:如果我使用 CurrentDateTime 作为标准属性:
并在构造函数中分配当前 DateTime 绑定有效。
.net - UnitOfWork 抽象背后的 EF - 获取插入的 id(再一次)
在我的解决方案中,EntityFramework 上下文在没有使用存储库模式的 UnitOfWork 的情况下被抽象的原因有很多,例如:
- 数据库优先方法(edmx 和自动生成的实体)
- 纯 ADO 和 EF 实现
- 域和数据库模式分离
所以我想出了一个问题,我需要添加两个相关实体,但不幸的是 DB 模式没有为该关系提供外键。假设它是Customer
和Address
关系。因此,这使我无法使用正常的 EF 功能将这些实体“一次性”存储在 db 中。这意味着我需要先存储,Customer
然后我需要从第一次插入开始存储。Address
CustomerID
我遇到的问题是,当我将域模型传递到 UnitOfWork 存储库时
我无法将CustomerID
其传递给下一个数据库请求。我真的不想通过在存储库方法中调用.SaveChanges()
EF 上下文来打破这种模式。.Add
经过一番调查,我发现在这种情况下,我能得到的最好的办法是将这个过程包装到事务中(这迫使我efcontext.SaveChanges()
在 Repository 方法中使用),但UnitOfWork.SaveChanges()
实际上会提交整个事务。
但我还发现了另一种在任何 SO 答案中从未见过的方法。如果有任何方法可以“通知”域模型关于自动生成的类CustomerID
中的属性更改,我正在调查。Customer
还有一个库可以帮助解决这个问题:https ://github.com/Fody/PropertyChanged
自动生成的 EF 类被定义为partial
这使我能够编写:
然后.Add
方法:
由于我没有修改任何自动生成的代码,我没有严重破坏 UoW 模式,并且我能够在外部提供插入的 ID。
但我的问题是,我不确定这种方法是否可以接受,也不确定使用哪种方法(交易或 Fody)。也许这个问题还有更多的解决方案?
data-binding - 领域对象的嵌套属性更改通知
我在我的 Xamarin Forms 项目中使用 Realm 和 PropertyChanged Fody。我有两个模型 -Person
如下Friend
所示。该person
对象具有对该对象的引用friend
。我已将Age
theperson
和 the绑定friend
到两个单独的标签。现在,正如我使用的那样PropertyChanged Fody
,每当Age
发生更改时,它都应该更新标签。但只有第一个标签(人的年龄)更新,第二个(人的朋友的年龄)没有。当朋友的年龄发生变化时如何发出通知?
我将它们绑定在 Xaml 中,如下所示。
c# - PropertyChanged 没有按预期工作
我目前正在尝试使用更改的 Fody 属性创建一个带有 MVVM 的 WPF 项目。
基本上,当我单击按钮时,我希望 TextBlock 显示“测试”文本。Click-Command 被执行,但 TextBlock 的文本没有改变。我想使用属性 Text 作为本地内存,使文本块保持最新,以便稍后将值发送到 model.text 并在那里使用它。但它只有在我使用我当前注释掉的代码时才有效。fody weaver 不应该为我做同样的事情吗(只是他创建了另一个私有变量而不是使用 model.text)?
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客户端
我怎么解决这个问题?