这个问题由于缺乏回复的好了,所以完全重写。 我想一个窗口,是拖能,但因为它是被拖累,改变利润率为窗口的老位置一直延伸。 IE窗口向右移动X,延长距左X.现在,我已经打了几个碰壁如窗口有它的边缘被截断由于某种原因。 这里是我的代码,让我知道你是否能发现任何东西!
private void Window_LocationChanged(object sender, EventArgs e)
{
double TmpLeft = Math.Abs(this.Left - WinLeft);
double TmpTop = Math.Abs(this.Top - WinTop);
if (this.IsLoaded)
{//depending on whether the window is moved left, right
if (this.Left > WinLeft)
{//depending on whether the window is moved up, down
if (this.Top > WinTop)
bdr.Margin = new Thickness(TmpLeft, TmpTop, 0, 0);
else
bdr.Margin = new Thickness(TmpLeft, 0, 0, TmpTop);
}
else
{
if (this.Top > WinTop)
bdr.Margin = new Thickness(0, TmpTop, TmpLeft+ 40, 0);
else
bdr.Margin = new Thickness(0, 0, TmpLeft, TmpTop);
}
}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
WinLeft = this.Left;
WinTop = this.Top;
bdr.Height = this.ActualHeight;//I set these because they are auto
bdr.Width = this.ActualWidth; //before the window opens
}
目前整个窗口(设置窗口背景颜色为黄色,所以我可以看到边缘)是移动的,在那里,因为我想保证金的左上角留在原地。 我也注意到,我点击拖动窗口(一个区域border
,因为我将窗口移动)往往会左右移动,以及因此不再受我的点击。 希望这是明确的,作进一步评论的问题。
OLD -只读明白我想做
所以我想创建一个具有一个弹出窗口的指针/线路从子窗口即将在父窗口的特定位置的应用程序。 我实现了这个像这样;
<Border Name="brdr" Margin="40,0,0,0" >
//Content
</Border>
<Line
Name="Pointer"
X1="0"
X2="40"
Y1="55"
Y2="50"
StrokeThickness="2"
Stroke="Black"
></Line>
注意40左Margin
上,使得比它出现,使得窗口变大边框Polygon
伸出的左侧和指向父窗口(如果有一个更好的/冷却器/更优雅这样的方式,我都耳朵)。
所以这工作得很好,但现在我想的指针是动态的。 如,如果孩子被窗口拖动指针必须相对扩展到父窗口的位置。 也就是说,它必须看起来好像两个窗口通过线路连接。 现在我的计划是在记录子窗口打开的点(因为它打开相对于父窗口,这是正确的,当它初始化),然后利用这一点,在新位置点之间的差值(拖动后)找到新的点该行应去。 我的代码可能说,这比我以往任何时候都可以...
private void Window_LocationChanged(object sender, EventArgs e)
{
if (this.IsLoaded)
{
brdr.Margin = new Thickness(Math.Abs(this.Left - WinLeft) + 40, Math.Abs(this.Top - WinTop), 0, 0);
Pointer.X1 = Math.Abs(this.Left - WinLeft);
Pointer.Y1 = Math.Abs(this.Top - WinTop) + 55;
Pointer.X2 = Math.Abs(this.Left - WinLeft) + 40;
Pointer.Y2 = Math.Abs(this.Top - WinTop) + 50;
}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
WinLeft = this.Left;
WinTop = this.Top;
}
正如你可以看到我有这样它延伸到老位置设置窗口余量。 然后,我将复位Line
COORDS为新值。 所有这些值进行计算,就像我说的,通过打开的窗口中COORDS比较当前COORDS。
我的问题是,这是不对的。 会很感动看到有人能想出解决办法。