【发布时间】:2013-04-16 07:44:26
【问题描述】:
如果我有以下视图模型
class Foo : INotifyPropertyChanged {
ISubject<string> Name { ... }
}
还有一些想象中的 XAML 代码
<TextBox Text="{my:Subscribe Path=Name}/>
我希望这两种方式的绑定能够表现得那样
- 在 UI 中更新文本框时调用 Subject.onNext
- 通过订阅 Subject.Subscribe 来更新文本框
由于 WPF 只直接支持 INPC,我的想法是创建一个代理 INPC 对象 通过标记扩展
class WPFSubjectProxy : INotifyPropertyChanged{
string Value { ... }
}
代理会这样连接到主题
subject.Subscribe(v=>proxy.Value=v);
proxy
.WhenAny(p=>p.Value, p.Value)
.Subscribe(v=>subject.OnNext(v))
注意WhenAny 是ReactiveUI 订阅助手
INPC 事件。
但是我需要生成一个绑定并返回 通过标记扩展。
我知道我想做什么,但不知道 标记扩展魔法将所有内容组合在一起。
【问题讨论】:
标签: c# wpf xaml system.reactive markup-extensions