如何在MainWindow中获取当前呈现的UserControls作为孩子?

时间:2016-09-23 17:04:54

标签: c# wpf mvvm user-controls navigation

我是MVVM新手并使用MVVMLight Toolkit。因此,我正在使用基于Uri的导航发生的项目,该视图在视图上显示为框架x:名称。  这是我的代码..

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;
     }
 }

如果我们想要导航功能在当前渲染的UserControll上工作哪个是MainWindow的孩子?我们需要执行哪些步骤? 喜欢

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;      
     }
 }

1 个答案:

答案 0 :(得分:0)

我通过将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;
         }           
     }