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类中。

我需要做什么才能让它发挥作用?

基础视图模型.cs

// This class is in the class library
public class BaseViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged = (sender, e) => { };

    public void OnPropertyChanged(string name)
    {
        PropertyChanged(this, new PropertyChangedEventArgs(name));
    }
}

测试外部文件

// This class is in the class library
public class TestExternal : BaseViewModel
{
    public ObservableCollection<string> UserProjects { get; set; }
    public string TestProp { get; set; }
    System.Windows.Application App;

    public TestExternal(System.Windows.Application app)
    {
        this.App = app;
        UserProjects = new ObservableCollection<string>(new List<string>() { "a", "b", "c" });
        TestProp = "A";

        Task.Factory.StartNew(() =>
        {
            Thread.Sleep(5000);
            App.Dispatcher.Invoke((Action)delegate
            {
                TestProp = "C";
                UserProjects.Add("d");
            });
        });
    }
}

测试内部文件

// This class is in the WPF app project
public class TestInternal : BaseViewModel
{
    public ObservableCollection<string> UserProjects { get; set; }

    public string TestProp { get; set; }

    System.Windows.Application App;

    public TestInternal(System.Windows.Application app)
    {
        this.App = app;
        UserProjects = new ObservableCollection<string>(new List<string>() { "a", "b", "c" });
        TestProp = "A";

        Task.Factory.StartNew(() =>
        {
            Thread.Sleep(5000);
            App.Dispatcher.Invoke((Action)delegate
            {
                TestProp = "C";
                UserProjects.Add("d");
            });
        });
    }
}

XAML

<TextBlock Text="{Binding TestProp}" Style="{StaticResource NaviHeading}" />
迈克尔·G

为了让 Fody 注入外部组件,您必须指定合适的织布工。

为了指示织布机运行的内容以及在项目级别使用 FodyWeavers.xml 文件的顺序。需要手动添加。它采用以下形式:

<Weavers>
    <PropertyChanged />
</Weavers>

https://github.com/Fody/PropertyChanged#add-to-fodyweaversxml

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

总是触发PropertyChanged

来自分类Dev

总是触发PropertyChanged

来自分类Dev

在ViewModel PropertyChanging / PropertyChanged上触发动画

来自分类Dev

在ViewModel PropertyChanging / PropertyChanged上触发动画

来自分类Dev

绑定到静态属性不会响应PropertyChanged

来自分类Dev

在不同的视图模型之间共享PropertyChanged数据

来自分类Dev

MVVM:引发DataContract类成员的PropertyChanged事件

来自分类Dev

如何在类之间传递PropertyChanged事件?

来自分类Dev

PropertyChanged事件触发器仅发生一次

来自分类Dev

即使属性值未更改,也会触发Propertychanged事件

来自分类Dev

为什么不触发Properties.Settings.Default.PropertyChanged?

来自分类Dev

WPF ListView不会在PropertyChanged上更新

来自分类Dev

自定义视图中的BindableProperty不会退订PropertyChanged

来自分类Dev

WPF ListView不会在PropertyChanged上更新

来自分类Dev

调试PropertyChanged

来自分类Dev

WPF文本框未使用数据绑定,iNotifyPropertyChanged和PropertyChanged触发器更新

来自分类Dev

如何向ViewModel添加方法并从那里触发PropertyChanged事件?

来自分类Dev

将数据传递到模型而无需触发PropertyChanged-Event

来自分类Dev

在Xamarin.Forms中调用PropertyChanged时,UI上的更新列表不会更改

来自分类Dev

除非暂停,否则不会在 xaml 中更新 PropertyChanged

来自分类Dev

基类实现INotifyPropertyChanged:派生类型可以使用其PropertyChanged事件吗?

来自分类Dev

基类实现INotifyPropertyChanged:派生类型可以使用其PropertyChanged事件吗?

来自分类Dev

winform 类中所有子属性的 propertyChanged 更新问题

来自分类Dev

无法使PropertyChanged.Fody在Xamarin.Forms应用程序中工作

来自分类Dev

WPF DataTrigger上的PropertyChanged

来自分类Dev

Buffer PropertyChanged Events

来自分类Dev

订阅propertyChanged事件PostSharp

来自分类Dev

MVVM中子属性的PropertyChanged

来自分类Dev

PropertyChanged的主体在哪里?

Related 相关文章

  1. 1

    总是触发PropertyChanged

  2. 2

    总是触发PropertyChanged

  3. 3

    在ViewModel PropertyChanging / PropertyChanged上触发动画

  4. 4

    在ViewModel PropertyChanging / PropertyChanged上触发动画

  5. 5

    绑定到静态属性不会响应PropertyChanged

  6. 6

    在不同的视图模型之间共享PropertyChanged数据

  7. 7

    MVVM:引发DataContract类成员的PropertyChanged事件

  8. 8

    如何在类之间传递PropertyChanged事件?

  9. 9

    PropertyChanged事件触发器仅发生一次

  10. 10

    即使属性值未更改,也会触发Propertychanged事件

  11. 11

    为什么不触发Properties.Settings.Default.PropertyChanged?

  12. 12

    WPF ListView不会在PropertyChanged上更新

  13. 13

    自定义视图中的BindableProperty不会退订PropertyChanged

  14. 14

    WPF ListView不会在PropertyChanged上更新

  15. 15

    调试PropertyChanged

  16. 16

    WPF文本框未使用数据绑定,iNotifyPropertyChanged和PropertyChanged触发器更新

  17. 17

    如何向ViewModel添加方法并从那里触发PropertyChanged事件?

  18. 18

    将数据传递到模型而无需触发PropertyChanged-Event

  19. 19

    在Xamarin.Forms中调用PropertyChanged时,UI上的更新列表不会更改

  20. 20

    除非暂停,否则不会在 xaml 中更新 PropertyChanged

  21. 21

    基类实现INotifyPropertyChanged:派生类型可以使用其PropertyChanged事件吗?

  22. 22

    基类实现INotifyPropertyChanged:派生类型可以使用其PropertyChanged事件吗?

  23. 23

    winform 类中所有子属性的 propertyChanged 更新问题

  24. 24

    无法使PropertyChanged.Fody在Xamarin.Forms应用程序中工作

  25. 25

    WPF DataTrigger上的PropertyChanged

  26. 26

    Buffer PropertyChanged Events

  27. 27

    订阅propertyChanged事件PostSharp

  28. 28

    MVVM中子属性的PropertyChanged

  29. 29

    PropertyChanged的主体在哪里?

热门标签

归档