Microsoft棱镜 - 外壳窗口中的多个区域

本文关键字:区域 窗口 棱镜 外壳 Microsoft | 更新日期: 2023-09-27 18:34:21

我正在使用Microsoft Prism开发WPF应用程序。我的 WPF 窗口有 2 个区域。下面是描述我的外壳窗口的 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 用户控件。第一个区域有一个按钮,第二个区域有一个文本框。我想这样做,当用户按下第一个区域中的按钮时,第二个区域中会出现一些文本(例如"Hello world")。我不确定这是否可能,因为我无法直接从区域 1 访问区域 2 中的文本框。如果我在区域 2 的用户控制中有一个函数,可以将 textBox 的文本设置为我想要的文本,那么如果在区域 1 中我没有区域 2/view2 的实例,我将如何调用该函数?

Microsoft棱镜 - 外壳窗口中的多个区域

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