【问题标题】:Region inside a region Prism not added to region manager区域内的区域 Prism 未添加到区域管理器
【发布时间】:2012-07-25 05:57:11
【问题描述】:

我有一个包含 3 个区域的 Shell。其中之一(A)是加载一个包含区域(B)的视图。问题是区域 B 未添加到区域管理器中。因此,当我想在区域 B 内加载任何视图时,我会收到此错误:区域管理器不包含 ListRegion 区域
这是一个常见问题还是我做错了什么?

编辑:添加代码 sn-p

<UserControl x:Class="StockOutput.Views.OutputInvoice"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:glob="clr-namespace:System.Globalization;assembly=mscorlib"
             xmlns:ext="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit.Extended"
             xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
             xmlns:gs="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"
             xmlns:prism="http://www.codeplex.com/prism"
             xmlns:inf="clr-namespace:SmartStock.Infrastructure;assembly=SmartStock.Infrastructure"
             xmlns:View="clr-namespace:Tiers.Views;assembly=Tiers"
             >
    <Grid >
... 
 <ext:ChildWindow  WindowStartupLocation="Center" CloseButtonVisibility="Hidden" Height="350" Width="600" WindowState="{Binding SupplierSelectionWindow}" IsModal="True" Grid.RowSpan="3" Grid.ColumnSpan="2">
            <ext:ChildWindow.Resources>

            </ext:ChildWindow.Resources>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="75*"></ColumnDefinition>
                </Grid.ColumnDefinitions>

                <Grid.RowDefinitions>
                    <RowDefinition Height="auto"></RowDefinition>
                    <RowDefinition Height="auto"></RowDefinition>
                    <RowDefinition Height="*"></RowDefinition>
                    <RowDefinition Height="35"></RowDefinition>
                </Grid.RowDefinitions>
                <Label Style="{StaticResource ViewTitle}">Choix Tièrs</Label>
                <StackPanel Orientation="Horizontal" Grid.Row="1">
                    <Label Margin="5">Recherche :</Label>
                    <TextBox TabIndex="0" Margin="5" Width="150"></TextBox>
                </StackPanel>

//HERE IS MY REGION
                <ContentControl Margin="5" Grid.Row="2"  prism:RegionManager.RegionName="{x:Static inf:RegionNames.ListRegion}">

                </ContentControl>
                <!-- <DataGrid Margin="5" TabIndex="1" Grid.Row="2" ItemsSource="{Binding TiersList}" SelectedItem="{Binding SelectedTiers}" CanUserAddRows="True" IsReadOnly="False">
                    <DataGrid.Columns>
                        <DataGridTextColumn Header="Fournisseur" Binding="{Binding TiersName}"></DataGridTextColumn>
                        <DataGridTextColumn Header="Catégorie" Binding="{Binding OperartorCategories.OperatorCategoryName}"></DataGridTextColumn>
                    </DataGrid.Columns>
                </DataGrid>-->
                <Button Grid.Row="3" TabIndex="2" Width="120" Margin="5" HorizontalAlignment="Right" Command="{Binding ValidateTiersChoiceCommand}">Valider</Button>
                <Button Command="{Binding CancelChoiceCommand}" Margin="0,5,144,5" Content="Annuler" HorizontalAlignment="Right" TabIndex="3" Width="120" Grid.Row="3" />
            </Grid>
        </ext:ChildWindow>
        ...
    </Grid>
</UserControl>

【问题讨论】:

  • 您能展示一下您所在区域的 XAML 的样子吗?我有很多项目在做完全相同的事情,所以我想这只是语法不正确。
  • 我从应用程序中添加了一个代码 sn-p
  • 如何加载此视图?你在做 RequestNavigate 吗?
  • 我尝试了 RequestNavigate 和 IRegion
  • XAML 与我的代码中的相同。我想这与您的视图如何加载有关。

标签: c# wpf mvvm prism regions


【解决方案1】:

感谢您的帮助,我发现我要求 RegionManager 在 ViewModel 构造函数的 ListRegion 中加载视图(此时视图尚未加载)。这就是我收到此错误的原因。问题解决了

【讨论】:

  • 那么你什么时候知道视图是什么时候加载的?
  • 我也遇到了同样的问题,加载时如何注册您的区域?
  • 对于现在遇到这个问题的任何人,您都可以使用 Interaction.Triggers、EventTrigger EventName="Loaded" 触发器来调用视图模型上的命令,然后使用区域管理器......所以你不会中断mvvm
猜你喜欢
  • 2016-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-01
  • 1970-01-01
  • 2011-08-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多