C# RxUI ObservablesPropertyHelper不适用于XAML绑定

C# RxUI ObservablesPropertyHelper不适用于XAML绑定,c#,wpf,xaml,binding,reactiveui,C#,Wpf,Xaml,Binding,Reactiveui,我有以下视图模型类(基于): public类SomeViewModel:ReactiveObject { 私有只读ObservablesPropertyHelperM_计数; 公共反应命令附加项{get;set;} 公共整数计数 { 获取{return m_count.Value;} } public-IReactiveList-SomeList{get;private-set;} 公共视图模型() { SomeList=新的反应列表(); AddItem=ReactiveCommand.Cre

我有以下视图模型类(基于):

public类SomeViewModel:ReactiveObject
{
私有只读ObservablesPropertyHelperM_计数;
公共反应命令附加项{get;set;}
公共整数计数
{
获取{return m_count.Value;}
}
public-IReactiveList-SomeList{get;private-set;}
公共视图模型()
{
SomeList=新的反应列表();
AddItem=ReactiveCommand.Create();
AddItem.Subscribe(x=>SomeList.Add(“新项目”);
m_count=SomeList.CountChanged.ToProperty(这个,x=>x.count,100);
添加(“第一项”);
}
}
以及以下XAML绑定:

<Button Command="{Binding AddItem}" Content="{Binding Count}" />

显示“我的视图”时,按钮内容为100而不是1。然后单击按钮时,内容将更新为2、3、4等


为什么没有观察到对
SomeList.Add()
的第一个调用?

这是一个微妙的错误。TopProperty是惰性的,这意味着它在设置XAML绑定之前(即调用SomeList之后)不会开始订阅。您应该能够通过以下方式解决此问题:

 SomeList.CountChanged.StartWith(SomeList.Count).ToProperty(this, x => x.Count, 100);

在我的实际使用案例中,此修复对我没有好处。为了说明这个问题,对上述示例进行了简化。实际上,我对
SomeList.Add(“第一项”)
的调用并不发生在构造函数中,而是发生在自动映射中。换句话说,
SomeViewModel
由AutoMapper创建,然后AutoMapper检测到
SomeList
已在构造函数中初始化,因此它只需调用
SomeList.AddRange()
以使用映射值填充列表。这是一个似乎没有被观察到的
AddRange()
调用。我真正需要做的是让我的UI知道列表已经更新,以便它可以显示正确的初始值,而不仅仅是默认值。我只使用了
CountChanged
observable,因为它可以方便地检测列表中的更改(我想知道添加和删除的项目,而不必观察两个不同的observable),但我并不真正关心实际的计数。仅供参考,您上面的答案实际上也无法修复上面的示例代码。在UI中显示的按钮内容的初始值仍然是100。如果我给
Count
一个setter,该setter引发它自己的属性更改事件,并简单地
Subscribe()
SomeList.ItemChanged
设置
Count
我自己,那么一切都按预期进行。但我希望理解为什么推荐的使用ObservablesPropertyHelper的方法不起作用。这里的问题是,无法使用StartWith()触发通知。TopProperty()。除了Subscribe()还有其他方式吗?
 SomeList.CountChanged.StartWith(SomeList.Count).ToProperty(this, x => x.Count, 100);