저는 DataGrid
의 엔티티를 끌어서 놓기를 통해 DataGrid
엔티티에 할당하는 도구를 작성하고 있습니다.
약간의 손재주로, 나는 사소한 성가심과 함께 모든 것을 원활하게 수행 할 수 있습니다. 일부 엔티티는 UI에 반영되지 않은 다른 엔티티에 할당 될 수 없습니다 (아직).DataGridDragDropTarget : 놓기 대상에 따라 아이콘 변경
따라서 달성하고자하는 동작은 다음과 같습니다. 사용자가 다른 엔터티 위에 할당 된 개체를 드래그하면 해당 엔터티가 호환되지 않으면 아이콘이 "여기에서 드롭 할 수 없습니다"아이콘으로 변경되어야합니다 .
이
은 (대상DataGrid
의
DataGridDragDropTarget.DragOver
이벤트에 부착) 내 코드입니다 :
private void DragDropTarget_OnDragOver(object sender, Microsoft.Windows.DragEventArgs e)
{
var sw = sender as DataGridDragDropTarget;
if (sw == null)
{
return;
}
if(GetAssignmentCondition(e))
{
// TODO: Show link-icon
}
else
{
// TODO: Show drop-disabled-icon
}
}
지금까지 시도했다 :
내가 e.Effects
, 설정 한 DragDropTarget
의 AllowedSourceEffects
ItemDragEventArgs
의 AllowedEffects
및 Effects
~ DragDropEffects.None
은 아무런 소용이 없습니다. 인터넷 검색도 의미있는 결과를 얻지 못했고 아이디어가 없습니다.
불행히도, 'Preview *'이벤트는 실버 라이트에 존재하지 않습니다. 나는 e.Handled를 true로 설정하려고 시도 할 것이고, 이것이 도움이되는지를 볼 것입니다. – Nuffin
'Handled'로 설정 했습니까? MS는 실제로 XAML을 사용하여 드래그 앤 드롭을 제대로 수행하지 못했지만 여러 가지 방법으로이 문제를 해결했습니다. 일반적으로 많은 고통이 따르므로 다른 사람들의 고통을 줄이려고합니다. (아주 명백한'Silverlight' 태그를 놓친 것에 대한 사과). – Gjeltema
Works, thanks : D – Nuffin