如何在c#中使用动态DataType?

时间:2016-10-07 09:10:39

标签: c# wpf frame datacontext

老实说,我不知道如何问这个问题。让我先解释一下我的情景。

来自我上一期提问的answer

frame.Content

正如您可以看到UserControl1更改,它可以有不同的DataType。因此,我不能只写UserControl1。现在,我可以写什么来代替frame.Content

更新:已添加详细信息

  • DataContext正在改变用户互动
  • 我想确定运行时frame.Content do_shortcode的当前数据类型

与往常一样,如果您需要澄清,请告诉我。

1 个答案:

答案 0 :(得分:2)

如果您frame.Content中唯一需要的是DataContext,则可以尝试将其投放到FrameworkElement,例如:

var frame = sender as Frame;
FrameworkElement content = frame.Content as FrameworkElement;
MainViewModel mvm = content.DataContext as MainViewModel;

如果frame.Content并非总是FrameworkElement,您可能需要先检查一下:

var frame = sender as Frame;
FrameworkElement content = frame.Content as FrameworkElement;
if (content != null) {
    MainViewModel mvm = content.DataContext as MainViewModel;
    // work with mvm...
}
else {
    // Frame's content is something unexpected.
}