|
|
1
6
我找到了一种处理DataTemplate中对象引发的事件的方法。 (1) 将事件处理程序附加到Items控件
(2) 要找出事件应用于哪个项目,请将OriginalSource视为FrameworkElement,并获取其DataContext:
|
|
|
2
3
ViewModel应该与GUI断开连接,因此它对控件或鼠标点击一无所知。 两种选择:
|
|
|
3
2
我找到了第二个问题的答案。我需要一个支持滚动的items控件,并且我需要将项目放在网格上,而不是默认的StackPanel上。为了满足这两个要求,我使用了ControlTemplate:
为了获得具有有意义的鼠标坐标(即可滚动空间中的坐标)的鼠标事件,有必要使用奇怪的咒语获得对网格的引用:
然后,您将事件处理程序附加到网格,并在鼠标事件处理程序中,使用以下命令获取鼠标相对于网格的坐标
为了在整个表面上获取鼠标事件,控件(实际上是网格)必须有背景,因此我在上面设置了background=“LightYellow”,它通过ControlTemplate中的绑定传播到网格。 |
|
|
4
1
Bea Stollnitz有一个名为“如何在数据绑定的items控件之间拖放项目?”的拖放示例。我本想发布链接,但StackOverflow不让我这么做。 您可能希望在拖动过程中拆分UI反馈,并在最终拖放时执行操作。 不过,我同意托马斯和卡梅伦的观点。您需要限制事件处理和数据绑定的混合/匹配。如果你要走事件处理路线,你可能不想避免为你的对象使用“视图模型”一词,因为它通常表示数据绑定的替代方案。 |
|
|
5
1
有一些方法可以在没有代码的情况下做到这一点。.. 您可以使用附加的行为模式将事件映射到命令,请参阅Marlon Grech的实现 here 你也可以使用 markup extension 我写的是将InputBindings绑定到ViewModel命令,如下所示:
但我不确定它是否符合您的具体需求。.. |
|
|
6
0
我正在使用一种更优雅的方法。我使用Prism 2和数据模板。所以我所做的是:
在ItemTemplate中,我刚刚在里面创建了一个按钮!
|
|
OREO · 如何在不实际单击复选框的情况下选中它 1 年前 |
|
|
Dan · 在元素外部设置html点击处理程序点击后立即触发 2 年前 |
|
|
Mero · Svelte在父事件调用上调用新的嵌套事件处理程序 2 年前 |
|
|
iorice · usercontrol dll中的组件事件 2 年前 |
|
|
Awin · 点击事件功能不适用于Vue组件 2 年前 |
|
|
Kiwi · 将可共享的自定义数据添加到事件MS图形api 2 年前 |