我有以下代碼處理由拇指控件拋出的鼠標拖動事件。它適用於背後的標準代碼,如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