Hen*_*und 19
这是那些痛苦的答案之一,我实际上并没有回答你的问题,而是向你讲述你应该采取哪些不同的做法.所以,抱歉.开始:
如果您发现自己处于需要访问viewmodel中的sender对象的位置,那么您应该做一些与众不同的事情.通过引用视图模型中的Button或ListBox,您可以使该视图模型了解它不应该知道的UI概念.我的建议是在代码隐藏页面中连接到事件,找出你需要知道的关于发送者或什么不是的事情,然后以编程方式执行viewmodel命令.这也打破了MVVM"规则",但恕我直言,这比在视图模型中引用发件人要轻得多.
小智 10
我遇到了类似的问题,但只需要获取EventArgs.很高兴,一旦我在Stack Overflow的另一个帖子中找到答案,这就太荒谬了.
<cmd:EventToCommand Command="{Binding SomeCommand, Mode=OneWay}" PassEventArgsToCommand="True"/>
Run Code Online (Sandbox Code Playgroud)
一旦你了解了那个神奇的"PassEventArgsToCommand"设置,你就是金色的.只需使用一个RelayCommand<type>普通的RelayCommand.
我希望这有帮助.
小智 7
这可以通过将发送方绑定到命令参数来完成.
<command:EventToCommand
Command="{Binding CommandName}"
CommandParameter="{Binding RelativeSource=
{ RelativeSource FindAncestor,
AncestorType={x:Type TypeOfSender},
AncestorLevel=1}}"
PassEventArgsToCommand="True" >
</command:EventToCommand>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15350 次 |
| 最近记录: |