Jungbluth
Mitglied
Hallo,
ich habe für wpf ein eigenes User Control erstellt welches ich in einem Cavans frei bewegen will. Das funktioniert aber nur für wenige Pixel gut dann fängt an zu ruckeln bzw. hin und herzuspringen Woran könnte das liegen?
ich habe für wpf ein eigenes User Control erstellt welches ich in einem Cavans frei bewegen will. Das funktioniert aber nur für wenige Pixel gut dann fängt an zu ruckeln bzw. hin und herzuspringen Woran könnte das liegen?
XML:
<UserControl x:Class="mdi.FloatPanel"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:mdi"
mc:Ignorable="d"
d:DesignHeight="50" d:DesignWidth="500" Background="Gray" AllowDrop="True" MouseDown="FloatPanelMouseDown" MouseMove="FloatPanelMouseMove" MouseUp="FloatPanelMouseUp" Name="FloatPanel1" />
C#:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace mdi
{
/// <summary>
/// Interaktionslogik für FloatPanel.xaml
/// </summary>
public partial class FloatPanel : UserControl
{
public FloatPanel()
{
InitializeComponent();
}
bool isDragging;
Point Panel, mousePoint, newMousePoint;
private void FloatPanelMouseDown(object sender, MouseEventArgs e)
{
isDragging = true;
Panel = new Point(Canvas.GetLeft(this), Canvas.GetTop(this));
mousePoint = new Point(Mouse.GetPosition(this).X, Mouse.GetPosition(this).Y);
}
private void FloatPanelMouseMove(object sender, MouseEventArgs e)
{
if (isDragging == true)
{
newMousePoint = new Point(Mouse.GetPosition(this).X,Mouse.GetPosition(this).Y);
Canvas.SetLeft(this, (Panel.X + newMousePoint.X -mousePoint.X));
Canvas.SetTop(this, (Panel.Y + newMousePoint.Y -mousePoint.Y));
}
}
private void FloatPanelMouseUp(object sender, MouseEventArgs e)
{
isDragging = false;
}
}
}