我創建了一個非常簡單的測試控件,它在畫布上有一個Rectangle
(在其他容器中,但無關緊要)。 Rectangle
具有鼠標放下,鼠標移動和鼠標移動的事件處理程序。如果我在Rectangle的MouseLeftButtonDown事件中捕獲鼠標,我沒有收到相應的MouseLeftButtonUp事件。鼠標捕獲後Silverlight鼠標事件丟失了嗎?
一些代碼:
private void rect1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if (_captured = CaptureMouse())
{
_offset = new Point(Canvas.GetLeft(rect1), Canvas.GetTop(rect1));
_origin = e.GetPosition(RootCanvas);
e.Handled = true;
}
}
private void rect1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if (_captured)
{
ReleaseMouseCapture();
_captured = false;
e.Handled = true;
}
}
我重視的容器元素的事件處理程序以及,只是爲了確保他們的一個不以某種方式得到鼠標釋放事件,但他們都不是。我還沒有學到Silverlight中對此的期望嗎?
我注意到我正在開發的一個WPF應用程序中的類似問題,但因爲我試圖在按下其他鼠標按鈕時捕獲鼠標而將其解決。意識到它不適用於除左鍵之外的任何其他操作,我放棄了這種方法,並且沒有進一步調查問題。 – ChrisF 2010-07-16 13:48:00