在我的MainWindow VM中,我從我的UserControls打開這樣的視圖。 Usercontrol1是在Xaml中製作的視圖的名稱。 在我的我的主窗口的視圖模型:從用戶控件訪問父窗口的網格
private static Grid _myMainGrid;
public static Grid MyMainGrid
{
get { return _myMainGrid; }
set { _myMainGrid = value; }
}
private void OpenUserControl(UserControl myUS)
{
if (MyMainGrid.Children.Count > 0)
{
MyMainGrid.Children.RemoveAt(0);
}
Grid.SetColumn(myUS, 1);
Grid.SetRow(myUS, 0);
MyMainGrid.Children.Add(myUS);
}
private void FindGrid(object obj)
{
var myGrd = obj as Grid;
if (myGrd != null)
{
MyMainGrid = myGrd;
}
}
的命令綁定到按鈕執行此操作。
private void ExecuteCMD_OpenUserControl1(object obj)
{
FindGrid(obj);
Usercontrol1 _ucItem = new Usercontrol1();
OpenUserControl(_ucItem);
}
現在我想開Usercontrol2從我的主窗口更換的UserControl1在MyMainGrid通過的UserControl1按下按鈕。所以我必須訪問父窗口。
嘗試使用this methode,但不能得到它在我的情況下工作。
您不希望或需要用戶控件對其父項執行任何操作。不是一個好主意。這裏真正的目標是什麼?你應該在任何情況下使用MVVM/XAML,而不是在代碼隱藏中創建控件。 –
我已經在MVVM/Xaml中創建了用戶控件。我在UsercontrolOrderOversight中有一個datagrid,我想在他的UsercontrolOrder中打開特定的順序,但是我希望它能打開它並替換監督 –
那麼他們是否有viewmodels?我不知道「打開它並取代監督」是什麼意思。你應該使用MVVM來完成你的整個應用程序,不僅僅是幾個小角落,其餘的都是winform。 –