如何在 C# 中使用动态数据类型?

How to use dynamic DataType in c#?

老实说,我不知道怎么问这个。让我先解释一下我的场景。

从我上一个问题得到的

...
var frame = sender as Frame;
UserControl1 uc1 = frame.Content as UserControl1;
MainViewModel mvm = uc1.DataContext as MainViewModel;
...

正如您所看到的 frame.Content 变化,它可以有不同的数据类型。因此,我不能只写UserControl1。现在,我可以写什么来替代 UserControl1

更新: 添加了详细信息

一如既往,如果您需要澄清,请告诉我。

如果您唯一需要的 frame.ContentDataContext,您可以尝试将其转换为 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.
}