如何在主窗口中获得当前渲染的用户控件作为子控件

本文关键字:控件 用户 窗口 | 更新日期: 2023-09-27 18:08:44

我是MVVM和使用MVVMLight工具包的新手。因此,我正在研究一个项目,在这个项目中,导航发生在基于Uri的地方,该Uri设置在视图上暴露为x:Name的框架上。这是我的代码…

public  virtual void SetFrame(Uri userControll, string FrameElementName)
{
     var mainWindow = Application.Current.MainWindow;
     var frame = mainWindow.FindName(FrameElementName) as Frame;
     if (frame != null)
     {
          frame.Source = userControll;
     }
 }

如果我们想让导航功能在当前渲染的usercontrol上工作,它是主窗口的子控件?我们需要执行哪些步骤?像

public  virtual void SetFrame(Uri anotherUserControll, string FrameElementName)
{
     var userControl= // what to do to get Currently rendered Usercontroll as child of MainWindow?
     var frame = userControl.FindName(FrameElementName) as Frame;
     if (frame != null)
     {
        frame.Source = anotherUserControll;      
     }
 }

如何在主窗口中获得当前渲染的用户控件作为子控件

我通过cast Frame解决了这个问题。Context作为UserControl来获取当前渲染的UserControl..

    public  virtual void SetFrame(Uri anotherUserControll, string FrameElementName)
     {
         var mainFrame =(Frame)Application.Current.MainWindow.FindName("MainFrame");
         var userControll = mainFrame.Content as UserControl;
         var frame = userControll.FindName(contentControll) as Frame;
         if (frame != null)
         {
             frame.Source = anotherUserControll;
         }           
     }