2011-11-08 15 views
3

このスレッドに関連しています。指定された要素はすでに別の要素の論理的な子です

Prism RegionAdapter - Removing then Adding View

このスレッドへの私のポストは、それが答えて、私は新しいスレッドを開始する必要がありましたと言って、私の管理者を削除しました。あなたがこの問題を解決した場合は、私にお知らせください。

私の削除された投稿は... 「特定の要素は既に別の要素の論理的な子です」というのをどのように取り除くことができましたか。イベントを閉じる際にエラーが発生しました。私は同じことをやってみました。閉めるとドキュメントペインからドッキング可能な内容が取り除かれました。しかし、私はこのエラーが発生し続けるのを助けるものではありません。ビューを削除してから、後で追加するのと同じ方法で後で再度追加しようとすると、このエラーが発生します。

どうか私を助けてください、私は何が欠けているか分かりません。私はあまりにも多くの時間を無駄にしていますが、運がまだありません。ここで

は、私が使用していますコードです:

<ad:DockableContent ... 
        x:Name="viewRoot" 
        IsCloseable="True" HideOnClose="False" 
        Title="{Binding Title}">  
     <ContentControl Grid.Row="1" Content="{Binding View}"/> 
    </Grid> 
</ad:DockableContent> 

それは、この内部で使用されます:

<ad:DockingManager x:Name="DockingManagerControl" Grid.Column="1"> 
       <ad:ResizingPanel x:Name="MainResizingPanel" ResizeWidth="*" ResizeHeight="*" Orientation="Horizontal"> 
        <ad:DockablePane ad:ResizingPanel.ResizeWidth="0.25*" prism:RegionManager.RegionName="ProjectBrowserRegion"/> 
        <ad:ResizingPanel x:Name="PespectiveResizingPanel" ResizeWidth="0.75*" ResizeHeight="*" Orientation="Horizontal"> 
         <ad:DocumentPane x:Name="DockablePaneControl"/> 
        </ad:ResizingPanel> 
       </ad:ResizingPanel> 
      </ad:DockingManager> 

表示コンテンツのバインディング別々のDLLから来ているUI要素です、だから私は持っていません。それらをView/ViewModelのペアとして使用します。だからここでContentTemplate + DataContextを使うことはできません。ものはうまく読み込まれますが、useはこれらのビューを選択/選択解除できます。したがって、ビューが再びビュー選択ダイアログを開いた場合、すべてのビューをクリアします(DockablePaneControl Items.Clear()から削除して、選択したビューをもう一度追加します(DockablePaneControl Items.Add())。エラー。

+0

@jlafayを書いたことをそんなにこのエラーに関する質問を参照してください。 Stackoverflowは、回答を掲示するために私のアカウントをロックしています。投票したのか、私の質問にフラグを立てましたか?あなたは私を助けることができます、私はしばらくここで活動していませんでしたが、今ここで答えを投稿することはできません。 – Rajiv

+0

すみません。私はあなたのポストに投票したり、旗を立てたり、何かをしなかった。私はちょうど編集を提供しました。 – jlafay

答えて

6

通常これは、同じコントロールを2つの異なる親に割り当てようとしているために発生します。

あなたのスタイルはContentControl.Contentを設定した場合、私は多くの場合、このようContentControl.Content、または例えばDataGridColumn.Header

として、コントロールが含まれている非テンプレートプロパティがスタイルに設定されているスタイル、でこの問題を見て、次の2つを追加ContentControlsをウィンドウに追加すると、スタイルは両方のContentControlのContentセクション内に同じコントロールを割り当てるため、このエラーが発生します。修正方法は、ContentControl.Contentの代わりにContentControl.ContentTemplateのようなテンプレートスタイルを設定することです。私はこれが複数の人に同じクッキーを与えるようなものだと言いたい - それはうまくいかない。代わりに、それぞれ独自のクッキーカッター(テンプレート)を与えなければなりません。

私は実際にあなたが削除するので、私の記事の最後に「ありがとう」、私はa blog post about it

+0

こんにちはレイチェル、あなたの迅速な対応に感謝します。はい、ContentControl.Contentプロパティを使用してコンテンツを設定しています。コンテンツはFrameworkElement全体として別々のdllから来るため、私はContentTemplate + DataContextで自分のものを実装できませんでした。私はここでMVVMを使用する贅沢を持っていない、私はどのように私はここでこの問題に来ることができます示唆してください。 ContentTemplate + DataContextを使用してこれを行う方法がありますか?私はContentControlの内部にホストされるUI要素全体を持っていることを覚えておいてください。 – Rajiv

+0

@Rajivあなたのソースコードを見る必要があります。質問の「編集」ボタンをクリックし、エラーの原因となっているコードを追加してください。私はあなたが投稿したリンク上の回答をアップvし、なぜそれが正しいのかについてのコメントを追加しました。あなたのコードがリンクされたポストのコードと似ている場合は、そのソリューションを使ってコードを修正することができます。答えのリンクはhttp://stackoverflow.com/questions/4993705/prism-regionadapter-removing-then-adding-view/4993910#4993910 – Rachel

+0

です。こんにちはレイチェル、私はコードスニペットを追加しました。 – Rajiv

関連する問題