C# 绑定到对象的新实例
我试图弄清楚如何在不破坏任何XAML绑定的情况下创建对象的新实例。现在我正在使用的是一个C# 绑定到对象的新实例,c#,wpf,xaml,C#,Wpf,Xaml,我试图弄清楚如何在不破坏任何XAML绑定的情况下创建对象的新实例。现在我正在使用的是一个observetecollection,我将其称为: Container.MyClass.MyCollection 在我的ViewModel中(通过一种魔术实现了INPC): 但是,如果我调用此方法: public MyClass BrokenFreshInstance() { var myClass = new MyClass(); myClass.MyCollection.Add(ne
observetecollection
,我将其称为:
Container.MyClass.MyCollection
在我的ViewModel中(通过一种魔术实现了INPC):
但是,如果我调用此方法:
public MyClass BrokenFreshInstance()
{
var myClass = new MyClass();
myClass.MyCollection.Add(new MyObject() { Name = "Test1" });
myClass.MyCollection.Add(new MyObject() { Name = "Test2" });
return myClass;
}
然后:
Container.MyClass = Initialize.BrokenFreshInstance();
绑定不再更新。是否有任何方法可以使用对象的新实例并使XAML绑定保持完整?如果属性返回的实例发生更改,则需要为
集合触发PropertyChanged
事件。您可以通过在可观察到:
public ObservableCollection<MyObject> Collection
{
get { return _collection; }
set
{
_collection = value;
RaisePropertyChangedEvent("Collection");
}
}
或者,您可以通过执行以下操作手动进行更改:
Container.MyClass = Initialize.BrokenFreshInstance();
RaisePropertyChangedEvent("Collection");
你的第一个解决方案奏效了。然而,由于我使用了某种魔法,我甚至不需要手动调用RaisePropertyChanged
;我只需要分配一个场和一个二传手。有没有办法绕过这个问题,仍然能够简单地从getter返回值?不管怎样,我感谢你的帮助!此外,属性与命令位于不同的ViewModel中,因此我认为您的第二个答案对我不起作用。请注意,一旦手动指定了值,自动属性就可以正常工作。谢谢你的帮助!然后我会选择第一种方法。您可以通过手动提升来实现它RaisePropertyChangedEvent(“Collection”)代码>。然而,我需要看更多的代码才能真正理解包含集合的父类是如何工作的。
Container.MyClass = Initialize.BrokenFreshInstance();
public ObservableCollection<MyObject> Collection
{
get { return _collection; }
set
{
_collection = value;
RaisePropertyChangedEvent("Collection");
}
}
Collection = Container.MyClass.MyCollection; //This will trigger the PropertyChangedEvent
...
Container.MyClass = Initialize.BrokenFreshInstance();
Collection = Container.MyClass.MyCollection; // Trigger again..
Container.MyClass = Initialize.BrokenFreshInstance();
RaisePropertyChangedEvent("Collection");