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;