diff --git a/ZuneModdingHelper/Pages/SettingsPage.xaml b/ZuneModdingHelper/Pages/SettingsPage.xaml
index 59508ea..aa1e3e5 100644
--- a/ZuneModdingHelper/Pages/SettingsPage.xaml
+++ b/ZuneModdingHelper/Pages/SettingsPage.xaml
@@ -7,8 +7,11 @@
xmlns:zmhs="clr-namespace:ZuneModdingHelper.Services"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
- Unloaded="SettingsPage_Unloaded"
- DataContext="{x:Static zmhs:Settings.Default}">
+ Unloaded="SettingsPage_Unloaded">
+
+
+
+
@@ -16,8 +19,10 @@
-
+
+
diff --git a/ZuneModdingHelper/Pages/SettingsPage.xaml.cs b/ZuneModdingHelper/Pages/SettingsPage.xaml.cs
index ca95812..b5f3a56 100644
--- a/ZuneModdingHelper/Pages/SettingsPage.xaml.cs
+++ b/ZuneModdingHelper/Pages/SettingsPage.xaml.cs
@@ -1,4 +1,5 @@
-using System.Windows;
+using Microsoft.WindowsAPICodePack.Dialogs;
+using System.Windows;
using System.Windows.Controls;
using ZuneModdingHelper.Services;
@@ -9,15 +10,45 @@ namespace ZuneModdingHelper.Pages
///
public partial class SettingsPage : UserControl
{
- public SettingsPage()
+ public SettingsPage(Settings settings)
{
+ ViewModel = new()
+ {
+ Settings = settings,
+ FolderPickerVisibility = CommonFileDialog.IsPlatformSupported
+ ? Visibility.Visible : Visibility.Collapsed,
+ };
+ DataContext = ViewModel;
+
InitializeComponent();
- DataContext = Settings.Default;
}
+ private SettingsViewModel ViewModel { get; }
+
private async void SettingsPage_Unloaded(object sender, RoutedEventArgs e)
{
- await Settings.Default.SaveAsync();
+ await ViewModel.Settings.SaveAsync();
+ }
+
+ private void LocateZuneButton_Click(object sender, RoutedEventArgs e)
+ {
+ CommonOpenFileDialog dialog = new()
+ {
+ IsFolderPicker = true,
+ DefaultDirectory = ViewModel.Settings.ZuneInstallDir
+ };
+ CommonFileDialogResult result = dialog.ShowDialog();
+ if (result == CommonFileDialogResult.Ok)
+ {
+ ViewModel.Settings.ZuneInstallDir = dialog.FileName;
+ }
}
}
+
+ internal class SettingsViewModel
+ {
+ public Settings Settings { get; init; }
+
+ public Visibility FolderPickerVisibility { get; init; }
+ }
}