0

Prism に基づくアプリケーションがあります。

これは私のシェルです:

<Window x:Class="AvarioCRM3.ShellV2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:cal="http://www.codeplex.com/CompositeWPF" >

    <DockPanel LastChildFill="True">
        <Border
            Padding="10"
            DockPanel.Dock="Top"
            Background="#ddd">
            <DockPanel>
                <ItemsControl 
                    Name="MainNavigationPanel" 
                    cal:RegionManager.RegionName="MainNavigationPanel" 
                    DockPanel.Dock="Top"/>

            </DockPanel>
        </Border>
    </DockPanel>

</Window>

MenuModuleで、ビューをリージョンに追加すると、問題なく表示されます。

public void Initialize()
{
    MainNavigationPresenter mainNavigationPresenter = this.container.Resolve<MainNavigationPresenter>();
    IRegion mainRegion = this.regionManager.Regions["MainNavigationPanel"];
    mainRegion.Add(new TestView());
}

問題は、シェルにItemsControlが必要ないことです。 ContentControl が必要ですが、 ContentControlを使用すると何も表示されません。

ItemsControl がビューを表示し、ContentControl が何も表示しないのはなぜですか?

4

3 に答える 3

1

これは、ContentControlが1つの子のみを表示するのに対し、ItemsControlには複数の子があるためでしょうか。

私はPrismを使用していませんが、APIは、IRegionに複数の子があると予想されることを示唆しています。ContentControlを使用している場合、次のようにするとどうなるかは少しあいまいです。

IRegion mainRegion = this.regionManager.Regions["MainNavigationPanel"];
mainRegion.Add(new TestView());
mainRegion.Add(new SecondTestView());
于 2009-07-22T12:18:52.950 に答える
1

ContentControl を持つ ItemsControl とは異なり、ビューを追加したら、ビューを表示するためにアクティブにする必要もあります。

MainNavigationPresenter mainNavigationPresenter = this.container.Resolve<MainNavigationPresenter>();
IRegion mainRegion = this.regionManager.Regions["MainNavigationPanel"];
TestView view = new TestView()
mainRegion.Add(view);
mainRegion.Activate(view);
于 2010-01-02T16:01:18.020 に答える
0

Initialize でこれを行っていることに気付きました。早すぎるかも?ビューの注入ではなく登録を使用して、何かが変わったかどうかを確認しましたか?

regionManager.RegisterViewWithRegion("MainNavigationPanel", typeof(TestView));

これで問題は解決しませんが、リージョンが実際に利用可能になる前に問題が何かを追加しようとしていることが証明されます。RegisterViewWithRegion は、リージョンが使用可能になるまで、ビューの作成と表示を遅らせます。

于 2009-07-22T15:44:41.150 に答える