From 756ea17d21b8d1861bcdf01e0722e03c29e416be Mon Sep 17 00:00:00 2001 From: Markus Quaritsch <markus.quaritsch@tugraz.at> Date: Thu, 2 Jun 2022 12:52:03 +0200 Subject: [PATCH] add file drag&drop functionality to xml file selector user controls --- .../ViewModel/UserControl/XMLFileSelector.cs | 2 ++ .../Views/UserControl/VectoXMLFileSelector.xaml | 6 +++--- .../Views/UserControl/VectoXMLFileSelector.xaml.cs | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/HashingTool/ViewModel/UserControl/XMLFileSelector.cs b/HashingTool/ViewModel/UserControl/XMLFileSelector.cs index 30d3d6be33..1bcf23c1cc 100644 --- a/HashingTool/ViewModel/UserControl/XMLFileSelector.cs +++ b/HashingTool/ViewModel/UserControl/XMLFileSelector.cs @@ -177,6 +177,8 @@ namespace HashingTool.ViewModel.UserControl } try { + _source = fileName; + RaisePropertyChanged("Source"); using (var stream = File.OpenRead(fileName)) { await LoadXMLFile(stream); } diff --git a/HashingTool/Views/UserControl/VectoXMLFileSelector.xaml b/HashingTool/Views/UserControl/VectoXMLFileSelector.xaml index c47a857620..a50c8504ea 100644 --- a/HashingTool/Views/UserControl/VectoXMLFileSelector.xaml +++ b/HashingTool/Views/UserControl/VectoXMLFileSelector.xaml @@ -7,12 +7,12 @@ xmlns:userControl="clr-namespace:HashingTool.ViewModel.UserControl" x:Class="HashingTool.Views.VectoXMLFileSelector" mc:Ignorable="d" d:DesignWidth="456" MinHeight="32" - d:DataContext="{d:DesignInstance views:VectoXMLFileSelector}"> + d:DataContext="{d:DesignInstance views:VectoXMLFileSelector}" > <UserControl.Resources> <BooleanToVisibilityConverter x:Key="BoolToVis" /> </UserControl.Resources> <StackPanel Margin="0,5" HorizontalAlignment="Stretch"> - <DockPanel HorizontalAlignment="Stretch" Height="Auto" Margin="0" VerticalAlignment="Top"> + <DockPanel HorizontalAlignment="Stretch" Height="Auto" Margin="0" VerticalAlignment="Top" AllowDrop="True" Drop="XMLFileBrowser_Drop"> <!--<ContentControl DockPanel.Dock="Right" Visibility="{Binding XMLFile.HasContentValidation, Converter={StaticResource BoolToVis}}" Width="40" Height="40" @@ -75,7 +75,7 @@ VerticalAlignment="Top" HorizontalAlignment="Right" Width="75" /> <TextBox DockPanel.Dock="Left" HorizontalAlignment="Stretch" VerticalAlignment="Top" Height="23" - Margin="0,0,10,0" TextWrapping="NoWrap" Text="{Binding XMLFile.Source, Mode=OneWay}" IsReadOnly="True"> + Margin="0,0,10,0" TextWrapping="NoWrap" Text="{Binding XMLFile.Source, Mode=OneWay}" IsReadOnly="True" PreviewDragOver="XMLFileBrowser_DragOver"> <TextBox.InputBindings> <KeyBinding Command="{Binding XMLFile.SetXMLFileCommnd}" Key="Return" /> </TextBox.InputBindings> diff --git a/HashingTool/Views/UserControl/VectoXMLFileSelector.xaml.cs b/HashingTool/Views/UserControl/VectoXMLFileSelector.xaml.cs index 1b163bbdb7..1bd88e28ce 100644 --- a/HashingTool/Views/UserControl/VectoXMLFileSelector.xaml.cs +++ b/HashingTool/Views/UserControl/VectoXMLFileSelector.xaml.cs @@ -63,5 +63,19 @@ namespace HashingTool.Views dialog.ErrorCount = XMLFile.XMLValidationErrors.Count; dialog.ShowDialog(); } + + private void XMLFileBrowser_Drop(object sender, DragEventArgs e) + { + if (e.Data.GetDataPresent(DataFormats.FileDrop)) { + var files = (string[])e.Data.GetData(DataFormats.FileDrop); + XMLFile.SetXMLFileCommnd.Execute(files?[0]); + } + } + + private void XMLFileBrowser_DragOver(object sender, DragEventArgs e) + { + if (e.Data.GetDataPresent(DataFormats.FileDrop)) + e.Handled = true; + } } } -- GitLab