Так что я работаю с WPF Infragistics XamDockManager
и PaneToolWindow
.Infragistics PaneToolWindow Window DragMove - Spooky Результаты
Я рестайлинг хром PaneToolWindow
с обычным XamRibbonWindow
.
I have managed to do this successfully. Если это сделано, то PaneToolWindow
теряет способность к наркотикам.
Решение состоит в том, чтобы переопределить функциональность перетаскивания (как моя оценка, так и recommendation from Infragistics). Однако, к сожалению, для меня и для всех пользователей инструментария Infragistics WPF почти нулевая документация и примеры того, как это сделать. Один из примеров того, что infragistics действительно обеспечивает, глючит, если не сказать больше.
Установка:
Это мой заказ Dock менеджер
public class CustomDockManager : XamDockManager
{
protected override PaneToolWindow CreatePaneToolWindow()
{
return new CustomPaneToolWindow() as PaneToolWindow;
}
}
Это мой обычай PaneToolWindow
public class CustomPaneToolWindow : PaneToolWindow
{
private Point _MouseClickPoint { get; set; }
private Boolean _IsMouseDown { get; set; }
public CustomPaneToolWindow()
{
this.MouseLeftButtonDown += CustomPaneToolWindow_MouseLeftButtonDown;
}
private void CustomPaneToolWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
this._IsMouseDown = true;
this._MouseClickPoint = e.GetPosition(this as UIElement);
}
else
{
this._IsMouseDown = false;
}
}
protected override void OnMouseMove(MouseEventArgs e)
{
//Need to move the window around here.
}
}
Теперь я попытался простой и переехал к сложному.
Во-первых, я пробовал делать что-то подобное.
public Window _WindowOfCustomToolPaneWindow { get { return Window.GetWindow(this); } }
public CustomPaneToolWindow()
{
this._WindowOfCustomToolPaneWindow.MouseLeftButtonDown
+=CustomPaneToolWindow_MouseLeftButtonDown;
}
private void CustomPaneToolWindow_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
this._WindowOfCustomToolPaneWindow.DragMove();
}
Можно было бы подумать, что это возвращает окно, которое плавает вокруг и содержит this
правильно? Вы ошибаетесь. Фактически он возвращает родительское окно. Это вызывает вызов DragMove()
для отправки дочернего окна, летящего с экрана.
Так к следующему ...
protected override void OnMouseMove(MouseEventArgs e)
{
Point cachedPoint = e.GetPosition(this as UIElement);
if (this._IsMouseDown && cachedPoint != this._MouseClickPoint)
{
Vector delta = Point.Subtract(this._MouseClickPoint, cachedPoint);
this.Left -= delta.X;
this.Top -= delta.Y;
this._MouseClickPoint = cachedPoint;
this._IsMouseDown = false;
}
}
Это немного более пространно попытке переместить окно вокруг. К сожалению, это тоже не работает. Я думаю, что он корректирует поля UserControl внутри окна, а не перемещает само окно.
Я нахожусь в убытке. Отсутствие поддержки от Infragistics по этой теме вызывает беспокойство, если не сказать больше.
Есть ли у кого-нибудь идеи о том, как разрешить это?
Какая версия Infragistics у вас есть? У вас есть соглашение о поддержке с ними вместо того, чтобы использовать поддержку сообщества? У вас есть полный проект, показывающий поведение с абсолютным минимальным кодом, необходимым для показа поведения? Это то, что я должен был сделать, чтобы получить более подробный ответ от них. – SteveFerg
Да ко всему вышесказанному. Тем не менее, почему-то я все еще здесь, ловя общественную помощь ..... –