feat(01-07): add SettingsView and wire into MainWindow Settings tab
- Create Views/Tabs/SettingsView.xaml (UserControl with language ComboBox en/fr, DataFolder TextBox and Browse button using TranslationSource) - Create Views/Tabs/SettingsView.xaml.cs (DI constructor injection of SettingsViewModel, LoadAsync on Loaded) - Update MainWindow.xaml to add xmlns:views namespace and clear placeholder TextBlock from SettingsTabItem - Register SettingsView as Transient in DI; resolve and set as SettingsTabItem.Content from MainWindow constructor - All 42 unit tests pass, 0 build errors
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:loc="clr-namespace:SharepointToolbox.Localization"
|
||||
xmlns:controls="clr-namespace:SharepointToolbox.Views.Controls"
|
||||
xmlns:views="clr-namespace:SharepointToolbox.Views.Tabs"
|
||||
mc:Ignorable="d"
|
||||
Title="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[app.title]}"
|
||||
MinWidth="900" MinHeight="600" Height="700" Width="1100">
|
||||
@@ -61,10 +62,9 @@
|
||||
<TabItem Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[tab.structure]}">
|
||||
<controls:FeatureTabBase />
|
||||
</TabItem>
|
||||
<!-- Settings tab: placeholder TextBlock replaced by SettingsView in plan 01-07 -->
|
||||
<!-- Settings tab: content set from code-behind via DI-resolved SettingsView -->
|
||||
<TabItem x:Name="SettingsTabItem"
|
||||
Header="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[tab.settings]}">
|
||||
<TextBlock Text="Settings (plan 01-07)" HorizontalAlignment="Center" VerticalAlignment="Center" />
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</DockPanel>
|
||||
|
||||
28
SharepointToolbox/Views/Tabs/SettingsView.xaml
Normal file
28
SharepointToolbox/Views/Tabs/SettingsView.xaml
Normal file
@@ -0,0 +1,28 @@
|
||||
<UserControl x:Class="SharepointToolbox.Views.Tabs.SettingsView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:loc="clr-namespace:SharepointToolbox.Localization">
|
||||
<StackPanel Margin="16">
|
||||
<!-- Language -->
|
||||
<Label Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[settings.language]}" />
|
||||
<ComboBox Width="200" HorizontalAlignment="Left"
|
||||
SelectedValue="{Binding SelectedLanguage}"
|
||||
SelectedValuePath="Tag">
|
||||
<ComboBoxItem Tag="en"
|
||||
Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[settings.lang.en]}" />
|
||||
<ComboBoxItem Tag="fr"
|
||||
Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[settings.lang.fr]}" />
|
||||
</ComboBox>
|
||||
|
||||
<Separator Margin="0,12" />
|
||||
|
||||
<!-- Data folder -->
|
||||
<Label Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[settings.folder]}" />
|
||||
<DockPanel>
|
||||
<Button DockPanel.Dock="Right"
|
||||
Content="{Binding Source={x:Static loc:TranslationSource.Instance}, Path=[settings.browse]}"
|
||||
Command="{Binding BrowseFolderCommand}" Width="80" Margin="8,0,0,0" />
|
||||
<TextBox Text="{Binding DataFolder, UpdateSourceTrigger=PropertyChanged}" />
|
||||
</DockPanel>
|
||||
</StackPanel>
|
||||
</UserControl>
|
||||
14
SharepointToolbox/Views/Tabs/SettingsView.xaml.cs
Normal file
14
SharepointToolbox/Views/Tabs/SettingsView.xaml.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
using System.Windows.Controls;
|
||||
using SharepointToolbox.ViewModels.Tabs;
|
||||
|
||||
namespace SharepointToolbox.Views.Tabs;
|
||||
|
||||
public partial class SettingsView : UserControl
|
||||
{
|
||||
public SettingsView(SettingsViewModel viewModel)
|
||||
{
|
||||
InitializeComponent();
|
||||
DataContext = viewModel;
|
||||
Loaded += async (_, _) => await viewModel.LoadAsync();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user