0

を使用しておりRibbonWindow、最初のセクションでは、ribbonBar ボタンとその他のコントロールを使用しており、2 番目のセクションではDockPanel 、その他のコントロールを表示/ロードしていました。

私は 2 つの userControls を持っています。1 つはコントロールを使用して詳細を表示するためのもので、もう 1 つはTextBox DataGridDropDown内のすべての既存のデータを表示するための userControl です。

これらの 2 つのコントロールは、条件に基づいてその DockPanel に配置する必要がありRibbonWindowます。

ここで、Grid 行のいずれかをクリックすると、選択した GridRow データを DisplayUserControl (userControl1) に入力し、userControl をその DockPanel にロード (2 番目の userControl を置き換える) する必要があります...

私がやったことは....

最初に をロードしUserControl2Dockpanelグリッド RibbonWindowデータを入力します。

ClickEvent
( GridList_MouseDoubleClick())を使用してグリッド行の値を取得しました。

そのメソッドで、One DelegateEvent を呼び出して、MainRibbonWindow で宣言されたメソッドを呼び出しました...

そのメソッドは、DockPanel別の userControl を表示してロードすることになっています。コードは以下です。

以下のメソッドは MainRibbonWindow にあります...

public void fnDisplayEmployeeDetails(string str,DockPanel dockPannel)
{
    //  dockPannel is to be cleared...
     this.Dispatcher.BeginInvoke((Action)delegate { dockPannel.Children.Clear(); }, null);  //To Clear the Dock Panel

    CtlAddEmployee frm2 = new CtlAddEmployee(str); //userControl1 and here str is Id of the Row...

    dockPannel.Children.Add(frm2);

}

ここですべての作業が完了しましたが、DockPanel残りは 2 番目の userControl のみです (つまり、Grid の表示のみ)。ドックパネルが firstUserControl に置き換えられていない

同じ値を別のウィンドウの Dockpanel に表示しようとすると、問題なく表示されます。なぜこの奇妙な行動が起こっているのかわかりません...

public void fnDisplayEmployeeDetails(string str,DockPanel docPannel)
{
    this.Dispatcher.BeginInvoke((Action)delegate { docPannel.Children.Clear(); }, null);  //To Clear the Dock Panel

    CtlAddEmployee frm2 = new CtlAddEmployee(str);
    MainWindow mnWindow = new MainWindow();    //another window Form...
    mnWindow.MainWindowDock.Children.Add(frm2);
    mnWindow.ShowDialog();  //here it is showing well....
}

別のユーザーコントロールにグリッド値の詳細を表示するにはどうすればよいですか?そのユーザーコントロールは同じドックパネルに入力する必要があります....

4

1 に答える 1