我正在使用Microsoft Prism开发WPF应用程序。我的WPF窗口有2个区域。这是描述我的shell窗口的XAML代码:
<Window x:Class="Shell.ShellWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cal="http://www.codeplex.com/prism"
xmlns:commonConstants="clr-namespace:Common.Constants;assembly=Common"
Height="479.851" Width="992.164">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*"/>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Name ="Grid1" Grid.RowSpan="3" Margin="0,0,364,0">
<ItemsControl cal:RegionManager.RegionName=
"{x:Static commonConstants:RegionNames.Region1}"/>
</Grid>
<Grid Name ="Grid2" Margin="662,0,0,0" Grid.RowSpan="3">
<ItemsControl cal:RegionManager.RegionName=
"{x:Static commonConstants:RegionNames.Region2}"/>
</Grid>
</Grid>
</Window>
如您所见,每个区域都在一个单独的网格中。每个区域都有与之关联的WPF用户控件。第一个区域有一个按钮,第二个区域有一个textBox。我想这样做,以便当用户按下第一个区域中的按钮时,第二个区域会出现一些文本(例如“Hello world”)。我不确定这是否可行,因为我无法直接从region1访问region2中的textBox。如果我在region2的用户控件中有一个函数可以将textBox的文本设置为我想要的函数,那么如果在region1中我没有region2 / view2的实例,我将如何调用该函数?
答案 0 :(得分:4)
您可以在PRISM 4.0中使用EventAggregator进行视图之间的通信。如果您使用的是PRISM5.0,请使用PubSubEvents http://www.codeproject.com/Articles/355473/Prism-EventAggregator-Sample