Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion DicomGrep/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@
<RowDefinition Height="Auto"/>
<RowDefinition Height="*" MinHeight="30"/>
</Grid.RowDefinitions>
<DataGrid ItemsSource="{Binding MatchFileList}" AutoGenerateColumns="False" SelectedItem="{Binding SelectedMatchFile, Mode=Default}" SelectionMode="Single" IsReadOnly="True">
<DataGrid ItemsSource="{Binding MatchFileList}" AutoGenerateColumns="False" SelectedItem="{Binding SelectedMatchFile, Mode=Default}" SelectionMode="Single" IsReadOnly="True" MouseMove="DataGrid_MouseMove" MouseLeftButtonDown="DataGrid_MouseLeftButtonDown">
<DataGrid.Columns>
<DataGridTextColumn Header="File" Binding="{Binding Filename, Mode=OneWay}"/>
<DataGridTextColumn Header="Patient" Binding="{Binding PatientName, Mode=OneWay}"/>
Expand Down
48 changes: 48 additions & 0 deletions DicomGrep/MainWindow.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using DicomGrep.Views;
using DicomGrepCore.Entities;
using System;
using System.Collections.Generic;
using System.Linq;
Expand All @@ -21,6 +22,9 @@ namespace DicomGrep
/// </summary>
public partial class MainWindow : Window
{
private Point _startDragPoint;
private ResultDicomFile _draggedFile;

public MainWindow()
{
InitializeComponent();
Expand All @@ -30,5 +34,49 @@ private void About_OnClick(object sender, RoutedEventArgs e)
{
new AboutView().ShowDialog();
}

private void DataGrid_MouseMove(object sender, MouseEventArgs e)
{
if (_draggedFile == null)
{
return;
}

Point currentPosition = e.GetPosition(null);
Vector dragDelta = currentPosition - _startDragPoint;

if (e.LeftButton == MouseButtonState.Pressed &&
(Math.Abs(dragDelta.X) > SystemParameters.MinimumHorizontalDragDistance ||
Math.Abs(dragDelta.Y) > SystemParameters.MinimumVerticalDragDistance))
{
string[] filePaths = { _draggedFile.FullFilename };
DataObject dataObject = new DataObject(DataFormats.FileDrop, filePaths);

DragDrop.DoDragDrop((DataGrid)sender, dataObject, DragDropEffects.Copy);

_draggedFile = null;
}
}

private void DataGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_startDragPoint = e.GetPosition(null);
var dataGrid = sender as DataGrid;
var row = FindAncestor<DataGridRow>((DependencyObject)e.OriginalSource);
if (row != null)
{
_draggedFile = row.Item as ResultDicomFile;
}
}

private T FindAncestor<T>(DependencyObject dependencyObject) where T : DependencyObject
{
var parent = VisualTreeHelper.GetParent(dependencyObject);

if (parent == null) return null;

var parentT = parent as T;
return parentT ?? FindAncestor<T>(parent);
}
}
}
Loading