3
我有一個拇指(包含一個TextBlock)和一個畫布內的邊框。 Thumb接收拖動事件,並且正在正確拖動。如何在拖動Thumb時捕捉MouseEnter?
我需要的是在拇指拖動時捕獲邊界上的MouseEnter事件。
問題是在DragCompleted事件後(釋放鼠標按鈕後)觸發MouseEnter。 如何在鼠標按下時鼠標進入邊框時知道?
的XAML:
<Grid>
<Canvas Margin="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Canvas Name="dragTarget">
<Thumb
DragStarted="Thumb_DragStarted"
DragDelta="Thumb_DragDelta"
DragCompleted="Thumb_DragCompleted">
<Thumb.Template>
<ControlTemplate>
<TextBlock
Text="Some Text"
Foreground="White"
Background="DimGray"/>
</ControlTemplate>
</Thumb.Template>
</Thumb>
</Canvas>
<Border Width="100" Height="100" Margin="50,50,0,0"
BorderBrush="AliceBlue" BorderThickness="1" Background="Silver"
MouseEnter="Border_MouseEnter"/>
</Canvas>
Xaml.cs:
bool isDragging = false;
double x = 0;
double y = 0;
private void Border_MouseEnter(object sender, MouseEventArgs e)
{
if(isDragging)
Title = "Captured";
}
private void Thumb_DragStarted(object sender, System.Windows.Controls.Primitives.DragStartedEventArgs e)
{
isDragging = true;
x = e.HorizontalOffset;
y = e.VerticalOffset;
}
private void Thumb_DragCompleted(object sender, System.Windows.Controls.Primitives.DragCompletedEventArgs e)
{
isDragging = false;
}
private void Thumb_DragDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
{
x += e.HorizontalChange;
y += e.VerticalChange;
dragTarget.Margin = new Thickness(x , y , 0, 0);
}
謝謝李。我正在尋找一種方法來從放置目標中捕捉事件,因爲實際應用程序中有太多類似邊框的對象。但是你的解決方案工作得很好,並且不會減慢UI。 – Bijan