1

以下のようなメソッドがあります。

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

このメソッドは、viewModel に含まれます。ブレークポイントから、私の xaml ページsomePagesを値として持つこの e.OriginalSource があることがわかります。したがって、私は値を比較しようとしています。しかし、それは私に以下のような警告を与えています:

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

それが正しい方法かどうかはわかりませんが、次の方法を使用して比較できます。

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

この状況では、キャストを入力する必要があります。e.OriginalSourceforタイプは になるため、キャストなしでオブジェクトのタイプを取得することはできませんObject。さらに、構築では次の型typeofのオブジェクトにする必要があります。System.Type

typeSystem.Typeのオブジェクトを取得するために使用されます。

したがって、これを試してください:

Page page = e.OriginalSource as Page;

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

または、あなたが言及したようにToString()メソッドを使用してください。e.OriginalSource

于 2014-03-26T07:19:57.733 に答える