diff --git a/MaterialDesignExtensions/Controllers/FileSystemController.cs b/MaterialDesignExtensions/Controllers/FileSystemController.cs index 67d62eca..f38e54dc 100644 --- a/MaterialDesignExtensions/Controllers/FileSystemController.cs +++ b/MaterialDesignExtensions/Controllers/FileSystemController.cs @@ -6,7 +6,7 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; - +using System.Windows; using MaterialDesignThemes.Wpf; using MaterialDesignExtensions.Model; @@ -777,10 +777,18 @@ private bool AreObjectsEqual(object o1, object o2) private void OnPropertyChanged(string propertyName) { - if (PropertyChanged != null && !string.IsNullOrWhiteSpace(propertyName)) - { - PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); - } + if (!string.IsNullOrWhiteSpace(propertyName)) + if (PropertyChanged != null) + { + PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); + } + else + { + Application.Current.Dispatcher.InvokeAsync(() => + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + }); + } } } } diff --git a/MaterialDesignExtensions/Controls/BaseFileControl.cs b/MaterialDesignExtensions/Controls/BaseFileControl.cs index 81c0b064..bb28607a 100644 --- a/MaterialDesignExtensions/Controls/BaseFileControl.cs +++ b/MaterialDesignExtensions/Controls/BaseFileControl.cs @@ -29,6 +29,11 @@ namespace MaterialDesignExtensions.Controls /// public abstract class BaseFileControl : FileSystemControl { + /// + /// An event-handler for the FileSelected event. + /// + public delegate void FileSelectedRoutedEventHandler(object sender, FileSelectedEventArgs fileSelectedEventArgs); + /// /// The name of the combo box inside the template. /// @@ -38,22 +43,15 @@ public abstract class BaseFileControl : FileSystemControl /// An event raised by selecting a file. /// public static readonly RoutedEvent FileSelectedEvent = EventManager.RegisterRoutedEvent( - nameof(FileSelected), RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(BaseFileControl)); + nameof(FileSelected), RoutingStrategy.Bubble, typeof(FileSelectedRoutedEventHandler), typeof(BaseFileControl)); /// /// An event raised by selecting a file. /// - public event RoutedEventHandler FileSelected + public event FileSelectedRoutedEventHandler FileSelected { - add - { - AddHandler(FileSelectedEvent, value); - } - - remove - { - RemoveHandler(FileSelectedEvent, value); - } + add => AddHandler(FileSelectedEvent, value); + remove => RemoveHandler(FileSelectedEvent, value); } /// diff --git a/MaterialDesignExtensions/Controls/FileSystemControl.cs b/MaterialDesignExtensions/Controls/FileSystemControl.cs index 45839822..01895fe0 100644 --- a/MaterialDesignExtensions/Controls/FileSystemControl.cs +++ b/MaterialDesignExtensions/Controls/FileSystemControl.cs @@ -300,7 +300,6 @@ public FileSystemControl() : base() { m_controller = new FileSystemController(); - m_controller.SelectDirectory(CurrentDirectory); CommandBindings.Add(new CommandBinding(FileSystemControlCommands.OpenSpecialDirectoriesDrawerCommand, OpenSpecialDirectoriesDrawerCommandHandler)); CommandBindings.Add(new CommandBinding(FileSystemControlCommands.SelectDirectoryItemCommand, SelectDirectoryItemCommandHandler)); @@ -326,6 +325,7 @@ public override void OnApplyTemplate() { base.OnApplyTemplate(); + m_controller.SelectDirectory(CurrentDirectory); m_pathPartsScrollViewer = Template.FindName(PathPartsScrollViewerName, this) as ScrollViewer; m_pathPartsItemsControl = Template.FindName(PathPartsItemsControlName, this) as ItemsControl;