我正在使用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中的文本框。如果我在region2的用户控件中有一个函数可以将textBox的文本设置为所需的文本,如果在region1中我没有region2 / view2的实例,该如何调用该函数?

最佳答案

您可以在PRISM 4.0中使用EventAggregator在视图之间进行通信。如果您使用的是PRISM5.0,请使用PubSubEvents
http://www.codeproject.com/Articles/355473/Prism-EventAggregator-Sample

关于c# - Microsoft Prism-Shell窗口中的多个区域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27492358/

10-13 06:19