Как Вы получаете отправителя события при использовании RelayCommand?
Это один из тех бесполезных% ¤ # ответов, когда я на самом деле не отвечаю на ваш вопрос, а вместо этого читаю вам лекцию о том, что вы должны делать по-другому. Так что извините за это. Вот что:
Если вы оказались в положении, когда вам нужно добраться до объекта-отправителя в вашей модели просмотра, вам, вероятно, следует сделать что-то другое. Ссылаясь, скажем, на Button или ListBox в вашей модели представления, вы сделали эту модель представления осведомленной о концепциях пользовательского интерфейса, о которых она не должна ничего знать. Я предлагаю вместо этого подключиться к событию на странице кода программной части, выяснить, что вам нужно знать об отправителе или о чем-то еще, а затем программно выполнить команду viewmodel. Это также нарушает «правила» MVVM, но IMHO это гораздо более легкий взлом, чем ссылка на отправителя в вашей модели просмотра.
У меня была похожая проблема, но мне нужно было только получить EventArgs. К счастью, это было абсурдно просто, как только я нашел ответ в другой теме здесь, в Stack Overflow.
<cmd:EventToCommand Command="{Binding SomeCommand, Mode=OneWay}" PassEventArgsToCommand="True"/>
Как только вы узнаете об этой волшебной настройке «PassEventArgsToCommand», вы золотые. Просто используйте RelayCommand
вместо простой RelayCommand.
Надеюсь, это поможет.