如何判断WPF应用中Frame控件加载的页面是否为ViewDataPage
解决WPF Frame判断当前页面类型的问题
你原来的代码错误在于把实例对象和类型本身做了相等比较,ContentFrame.Content是Frame加载的页面实例,而ViewDataPage是类型,这俩根本没法用==匹配,所以永远不会触发后续操作。
正确的判断方式有两种,按需选择:
方法1:使用is关键字(推荐)
这个方式不仅能判断类型,还能直接将实例转换为目标类型,方便后续操作:
if (ContentFrame.Content is ViewDataPage viewDataPage) { // 这里可以直接使用viewDataPage实例,比如调用它的方法或属性 // Do Something. }
方法2:使用GetType()和typeof()
如果需要精确匹配类型(不包含子类),可以用这个方式:
// 先判断Content不为null,避免空引用异常 if (ContentFrame.Content != null && ContentFrame.Content.GetType() == typeof(ViewDataPage)) { // Do Something. }
额外注意事项
- 确保已经在代码文件顶部引用了
ViewDataPage所在的命名空间,比如using YourNamespace.Pages; - 如果
ViewDataPage来自其他程序集,要确认项目已经正确引用该程序集,且类型是同一个(避免因程序集版本或重复定义导致类型不匹配)
内容的提问来源于stack exchange,提问作者Versteel
相关产品推荐
相关产品推荐

