Я использую Lesters DragAndDropManager
чтобы получить функцию перетаскивания в моем приложении, и мне очень нравится, как оно реализовано, но у меня есть одна небольшая проблема - я хочу показать кординацию мыши во время перетаскивания в моей строке состояния, так как мне отправить положение мыши из DropManager в мой код xaml.
Я попытался добавить свойство зависимостей в диспетчере, которое можно связать в xaml-коде.
public static readonly DependencyProperty MousePointProperty =
DependencyProperty.RegisterAttached("MousePoint", typeof(Point), typeof(DragDropBehavior),
new FrameworkPropertyMetadata(default(Point)));
public static void SetMousePoint(DependencyObject depObj, bool isSet)
{
depObj.SetValue(MousePointProperty, isSet);
}
public static IDragSourceAdvisor GetMousePoint(DependencyObject depObj)
{
return depObj.GetValue(MousePointProperty) as IDragSourceAdvisor;
}
И в Ксамле я привязываюсь к этому вот так.
<StatusBar>
<TextBlock Text="{Binding local:DragDropBehavior.MousePoint.X}"/>
</StatusBar>
Но как мне установить для мыши указатель на свойство зависимости в диспетчере?
private static void DropTarget_PreviewDragOver(object sender, DragEventArgs e)
{
if (UpdateEffects(sender, e) == false) return;
//-- Update position of the preview Adorner
Point position = GetMousePosition(sender as UIElement);
//-- Here I Want to do this, but that not posible because the SetMousePoint takes a dependencyObject and not my value.
//-- SetMousePoint(position);
_draggedUIElementAdorner.Left = position.X - _offsetPoint.X;
_draggedUIElementAdorner.Top = position.Y - _offsetPoint.Y;
e.Handled = true;
}
Я думаю, что я здесь не прав, но я застрял в том, как получить координацию мыши для xaml-кода, связавшись с DragAndDropManager.
Спасибо.