问题标签 [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 投票
1 回答
124 浏览

c# - 有没有办法“告诉” IntelliSense 和编译器该类实现了接口而不实际实现它?

我在我的 C# 项目中使用 Fody.PropertyChanged 和 Fody.Validar 以避免编写样板代码。假设我有一些 A 类:

我必须在代码的其他部分使用 A 类型的对象,这些部分需要 A 类型来实现 INotifyPropertyChanged 或 INotifyDataErrorInfo 等接口。有两种已知的方法可以做到这一点:

  1. 手动实现接口(很多样板文件):
  1. 将类型 A 的对象转换为所需的接口(更多代码,ReSharper 会生成有关可疑转换的警告,泛型方法可能会中断):

有没有办法“告诉” IntelliSense 和编译器该类实现了接口而不实际实现它并让 Fody 完成这项工作?

0 投票
1 回答
155 浏览

c# - 除非双击,否则修改源时 DataGrid 的值不会更新

修改其中的值时,我的 DataGrid 的值似乎没有更新。

我努力了:

  1. 将模式设置为TwoWay
  2. 使用BindableCollection(来自 Caliburn.Micro)
  3. 使用ObservableCollection
  4. 用一个List
  5. 合并QuotationViewModel_TableViewModel
  6. 添加Work和删​​除项目
  7. x:Name="Work"在 DataGrid 中使用而不是 ItemsSource

表视图模型.cs

表视图.xaml

报价视图模型.cs

报价单视图.xaml

存储库:https ://github.com/hizamakura/Furniture

这个gif 中可以看出,当我双击它时,值会更新,它应该更新而无需双击它。我知道绑定是正确的,因为当我更新 Value 时,比如Millingto 0.20Total将会更改为20%Mahogany。

0 投票
1 回答
657 浏览

c# - PropertyChanged 不会从不同程序集中的类中触发

我有一个类库,其中包含一个BaseViewModel实现 的基类 ()INotifyPropertyChanged和一个派生自它的类 ( TestExternal)。

我使用 Fody v4.2.1 和 PropertyChanged.Fody v2.6.1。

在 WPF 应用程序中,我将该类用作 DataContext。更改属性时,它不会反映在应用程序中。TestInternal但是,如果我将该类从类库复制(并重命名为)到应用程序,则属性更改会反映在应用程序中。该类TestInternal派生自BaseViewModel类库中的相同类。

此简化示例中的类由 astring和组成ObservableCollection<string>

ObservableCollection<string>绑定到控件,并且在这两种情况下,添加元素都会"d"正确反映在应用程序中。但是将字符串属性设置"C"为仅反映在TestInternal类中。

我需要做什么才能使它正常工作?

BaseViewModel.cs

测试外部.cs

测试内部.cs

XAML

0 投票
2 回答
3375 浏览

wpf - Fody 及其插件可以与 .NET Core (3.0) 一起使用吗?

正如标题所说,我无法让Fody和插件Fody.PropertyChanged在 .NET Core 3.0 或任何 .NET Core 版本中工作。阅读各个 GitHub 页面上的问题并不能回答我的问题,我也无法找到任何相关的答案。

安装后,我无法再运行我的 WPF 项目,并且出现以下错误:

有什么建议么?

编辑:我发现我(也许)不能在 FodyWeavers.xml 文件中像这样使用“Fody.Costura”和“Fody.PropertyChanged”:

这应该不是问题,因为使用 .NET Core 我无论如何都可以创建单个文件应用程序。从 FodyWeavers.xml 中删除 Costura 引用解决了我的问题!

0 投票
2 回答
338 浏览

msbuild - 当 Fody 编写程序集时,MSBuild 永远挂起

在我的解决方案中,许多项目使用Fody来注入PropertyChanged编织器。不幸的是,在构建结束时,当Fody开始编写最终程序集时,进程挂起并且无法恢复。

这是我正在执行的 MSBuild 命令:

这是构建的日志:

如果我尝试取消构建,它将在这种状态下永远挂起CTRL-C我收到以下消息:

该过程将继续尝试每 10 秒左右取消一次构建,但未成功。MSBuild 任务变得无法杀死,我需要重新启动机器才能尝试启动另一个构建!

该项目使用以下内容:

  • Fody.3.0.3
  • PropertyChanged.Fody.2.4.0

我使用的 msbuild 版本是16.4.0.56107

我尝试更新到最新的 Fody 版本,但没有帮助。

我知道这可能是一个长镜头;如果有人对如何调查此问题有任何提示/想法,请分享。谢谢你。

-- 编辑 -- 如果我从失败的项目中删除 PropertyChanged 和 Fody,则解决方案可以完成构建。什么可能导致 Fody 上吊?

0 投票
1 回答
138 浏览

wpf - 如何使用 wpf 和 mvvm 中的动态菜单获得正确的 CommandParameter Binding

我在我的 WPF 应用程序中实现了一个动态菜单服务。每个命令可以或应该有不同的命令参数。

问题: 使用我在 xaml 中设置 CommandParamter 绑定的解决方案,命令中的 CanExecute 属性不再更新。

到目前为止我有什么

我正在使用 mvvm-light 和 fody-propertychanged。

这里的菜单类:

此类由 MenuService 使用:

在视图模型的构造函数中,我得到了 MenuService 的实例并添加了一些项目:

然后我在视图模型中有一个可绑定的属性:

这里的命令实现为 RelayCommand:

然后在 MainView 我有以下 xaml:

注意力。xaml 中的 CommandParameter 绑定类型当前不正确。这是另一个问题,我会自己解决。但出于测试目的,它应该可以工作。由于类型错误,它会给我一个例外。

但是,当我在 Style.Trigger 中使用 DataTrigger 进行 CommandParameter 绑定时,CanExecute 属性在运行时不再更新。当我将此部分注释掉时,一切正常。但是我没有CommandParameters。

欢迎任何帮助和建议。

0 投票
0 回答
100 浏览

wpf - 无法使用 INotifyPropertyChanged 扩展 MVVMLight 的 ViewModelBase

我一直在使用自己的ViewModelBaseand RelayCommand,最近我安装了 MVVMLight 以及 PropertyChanged.Fody。如果您使用的是自定义设置器,PropertyChanged.Fody 似乎不会通知,所以我确实需要OnPropertyChanged自己在某个地方实现。

这是一个仍然继承自我自己的类的成员ViewModelBase

我想让这个类从 MVVMLight's 继承ViewModelBase,但如果我这样做,它会说PropertyChanged隐藏其继承的成员,当我删除该事件的声明(使用继承的成员)时,我在OnPropertyChanged方法中遇到错误,说PropertyChanged只能用于 += 或 -= 的左侧。

我已经设法通过声明PropertyChanged为 a来解决这个问题new event,这允许我从 MVVMLight 继承ViewModelBase,但这对我来说不合适。

我是在使用new event关键字“做对了”,还是对如何PropertyChanged按预期使用有一些答案OnPropertyChanged

或者,有没有办法编写我的自定义设置器并让通知工作而无需显式调用OnPropertyChanged()?)

0 投票
1 回答
223 浏览

xamarin.forms - Fody System.OutOfMemoryException

我有一个使用 PropertyChanged.Fody 的 Xamarin Forms 项目。

我已经更新了 3.2.8 版本,当我尝试编译 PCL 项目时会触发此错误。

我在 Windows 上使用 Visual Studio 16.6.0。

我该如何解决这个问题?

0 投票
2 回答
265 浏览

c# - NotifyPropertyChanged 未在派生类中触发

我有这 3 节课

使用如图所示的代码,更改OnSelectedAreaIdChanged时不会触发。SelectedAreaId如果我取消注释代码,则会OnSelectedAreaIdChanged触发。

这是预期的行为吗?除了我已经做到的方式之外,还有其他方法吗?

0 投票
1 回答
208 浏览

c# - Fody PropertyChanged Weaver 导致内存问题

我将 PropertyChanged.Fody 安装到 WPF 应用程序中。现在使用本机内存的第 3 方代码存在内存分配问题。卸载 PropertyChanged.Fody 可以解决所有这些问题。我认为该包导致属性更改注入到这些程序集中的类中,所以我添加了一个 [程序集:PropertyChanged.FilterType("My.Specific.OptIn.Namespace.")] 我安装 fody 的项目以使注入选择加入. 请注意,我完全按照我刚刚编写的方式保留了过滤器属性,因此没有任何匹配项,只是为了测试。然而仍然有问题。