我有以下代码处理由拇指控件抛出的鼠标拖动事件。它适用于背后的标准代码,如SettingView.xaml和SettingView.xaml.csWPF mvvm传递(使用命令)和接收视图和视图模型之间的事件和eventargs参数
但我如何处理这在我的SettingViewModel.cs文件。
到目前为止,我能够使用接受参数的DelegateCommand(或RelayCommand)连线点击,但是如何从事件发送的参数获取输入?例如,拖动事件提供事件参数e.HorizontalChange和e.VerticalChange。请看下面我的代码原型。
任何优雅的解决方案,非常感谢。
在此先感谢。
============================================== ==================================== SettingView.xaml
Thumb Name =“thumbWest” DragDelta =“thumbWest_DragDelta
SettingView.xaml.cs
private void thumbWest_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
_captureMargin.Left = _captureMargin.Left + e.HorizontalChange;
if (e.HorizontalChange < 0)
{
// Drag towards West
_widthRect = _widthRect + Math.Abs(e.HorizontalChange);
}
if (e.HorizontalChange > 0)
{
// Drag towards East
_widthRect = _widthRect - e.HorizontalChange;
}
感谢您回复苏维克。 对于第一种方法,我没有在我的用户控件中的Viewmodel的实例,因为我遵循在Viewmodel和View之间使用XAML的框架Josh Smith示例。尽管在我的框架中我很难确定我是否能够通过这条道路。 对于第二个,我无法理解应该如何使用xaml。你能在这里提供一些XAML代码的原子球原型吗? – 2011-06-14 08:22:34
我会给你一段时间如何使用第二种方法的例子。关于第一个,ViewModel必须是View的DataContext。因此,您可以通过将UserControl \ Window(View)的DataContext属性强制转换为ViewModel的类并使用它来获取ViewModel。 – 2011-06-14 08:52:00
干杯Souvik,第一种方法工作正常,虽然它的临时工作,因为它击败了使用MVVM分层的目的。实际上,我可以将该方法公开并直接从viewmodel对象的实例中调用它。 现在我将再次尝试AttachedBehaviour – 2011-06-14 13:57:55