Prism-跨区域数据绑定
本文关键字:数据绑定 区域 Prism- | 更新日期: 2023-09-27 18:00:08
假设我有两个区域A和B。
区域A:
<Grid>
<TextBlock Name="tba"> HAHAHA </TextBlock>
</Grid>
区域B:
<Grid>
<TextBlock Text="{Binding ElementName=tba, Path=Text}"/>
</Grid>
这不起作用。解决此问题的方法是什么,因此在区域B中也显示"HAHAHA"?
您的视图模型可以通过EventAggregator
相互通信以建立连接。
// needs to be public if the two view models live in different assemblies
internal class ThePropertyChangedEvent : PubSubEvent<string>
{
}
internal class ViewAViewModel : BindableBase
{
public ViewAViewModel( IEventAggregator eventAggregator )
{
_eventAggregator = eventAggregator;
eventAggregator.GetEvent<ThePropertyChangedEvent>().Subscribe( x => TheProperty = x );
}
public string TheProperty
{
get { return _theProperty; }
set
{
if (value == _theProperty)
return;
_theProperty = value;
_eventAggregator.GetEvent<ThePropertyChangedEvent>().Publish( _theProperty );
OnPropertyChanged();
}
}
#region private
private readonly IEventAggregator _eventAggregator;
private string _theProperty;
#endregion
}
ViewBViewModel
本质上是相同的(在这个简单的例子中)。