1

我有一个如下所示的方法:

private void someEvent(RoutedEventArgs e)
{
    if(e.OriginalSource == typeof(a.b.c.somePages))
}

此方法将在我的 viewModel 中。从断点,我可以看到这个 e.OriginalSource 有我的 xaml 页面somePages作为值。因此,我试图比较价值。但它给了我如下警告:

Possible unintended reference comparison; to get a value comparison, 
cast the left hand side to type 'System.Type'

所以我更新了我的代码,if((System.Type)e.OriginalSource == typeof(a.b.c.somePages))但警告仍然存在。我可以知道有什么问题吗?

4

3 回答 3

1

在这种情况下,您需要键入 cast。如果没有强制转换,您将无法获得对象的类型,因为 fore.OriginalSource类型将是Object。此外,在构造typeof中是一个对象System.Type类型:

用于获取类型System.Type的对象。

因此试试这个:

Page page = e.OriginalSource as Page;

if (page != null) 
{
    string test = page.ToString();
}

或者只是使用你提到ToString()的方法。e.OriginalSource

于 2014-03-26T07:19:57.733 回答
1

我不确定这是否正确,但我可以使用以下方式进行比较:

if(e.OriginalSource.ToString() == "a.b.c.SomePages")
于 2014-03-26T07:16:50.090 回答
1

您正在将一个对象与type. 如果您打算改为比较对象的类型,请尝试这样做:

if (e.OriginalSource.GetType() == typeof(a.b.c.somePages))
{

}

另一种方法是使用is运算符:

if(e.OriginalSource is a.b.c.SomePages)
{

}

从上面的 MSDN 链接,关于is

“检查对象是否与给定类型兼容”。

于 2014-03-26T07:47:02.243 回答