내 UI에 놓기 작업을 수행 할 수있는 표/패널이 있습니다. 컨트롤은 그 안에 동적으로 생성 된 일부 내용이있는 그리드입니다 (중요한 경우 테두리의 스택 패널을 포함하는 뷰 박스).IsMouseOver 및 DragLeave가 제대로 작동하지 않습니다.
관련 정보를 그리드로 드래그하면 내부 내용을 변경 (재생성)하고 싶을 때 드롭하거나 놓아두면 정상으로 돌아갑니다. 나는 '변경'과 '다시 돌려 놓기'방법을 잘 사용하고 있지만, 언제 호출해야하는지 결정하는 데 어려움을 겪고있다.
나는 그리드에 드래그 이벤트를 끌어다 놓습니다. 들어가는 것은 훌륭하지만 휴가는하지 않습니다. 마우스가 그리드 안의 내용 위에 마우스를 올리 자마자 드래그 앤드 이벤트가 발생하여 내용을 변경합니다 (자식 콘텐트에서 다시 꺼내면 드래그가 다시 시작되고 깜박입니다) .
내 첫 번째 생각은 마우스가 실제로 눈금 위에 아직 있는지를 확인하고 내용을 다시 넣지 않고 그냥 버리는 것입니다. 그러나 이것은 작동하지 않는 것 같습니다. 여기에 드래그 휴가에 대한 내 코드입니다 :
private void Grid_DragLeave(object sender, DragEventArgs e)
{
var wizard = DataContext as WizardVM;
var gd = sender as Grid;
if (wizard == null || gd == null || gd.IsMouseOver ||
gd.Children.Cast<FrameworkElement>().Any(x => x.IsMouseOver)) return;
wizard.Assembly.CollapsePreview();
}
당신이 볼 수 있듯이, 나는 심지어 그리드의 자식을 반복하고 이상 마우스가 그 중 하나에 해당하는 경우보고 밖으로 도랑했는데, 아직도 그냥 유지 그 모든 것에 대해 false를 반환하고 접습니다. 나는 IsMouseOver가 비록 그것이 비록 통제의 아이들이라 할지라도 마우스가 완전히 끝났다고 말해야한다고 생각했다. ...
Winforms, WPF, ASP ..는 무엇을 목표로 삼고 있습니까? __ 항상 뚜껑을 달아주세요. – TaW
IsMouseOver는 true가 아닙니다. 정상적인 마우스 조작은 D + D 조작이 진행되는 동안 일시 중단됩니다. 아무도이 스 니펫에서 대안을 제안 할 수있는 방법을보기가 어렵습니다. –
죄송합니다. WPF입니다. 그래서 한스 (Hans)는 마우스가 그리드의 경계에 있는지 여부를 알려주는 방법이 없다고 말하고 있습니까? – sfaust