- AppServices composition root: owns config, global workspace registry (app.db), platform path comparer and the LRU workspace connection pool; configuration persisted once at shutdown and services disposed - AppDataPaths centralizes app.json / app.db locations; AppConfig gains a DefaultLanguage constant - MVVM shell: MainWindowViewModel hosts SidebarViewModel and the current content page (welcome / workspace / localized failure state), mapping typed open failures to ResX messages - SidebarViewModel: persistent workspace list with name-asc, name-desc and recently-updated sorting (selection persisted), open-project folder picker and initialize confirmation via Interaction<TInput,TOutput> handlers registered by the view; workspace entries open/remove - Pages (welcome, workspace, message), dialogs (settings, about, confirm) with their view models; settings/about opened from the window - App startup applies configured culture (RTL flow direction) and theme before the main window; forwarded IPC commands activate the window and switch workspace from the launch path - Full UI text sourced from ResX in both en and zh-Hans; no hardcoded strings, theme colors via ThemeDictionaries
11 lines
515 B
XML
11 lines
515 B
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:vm="using:YKanBan.ViewModels.Pages"
|
|
x:Class="YKanBan.Views.Pages.WorkspacePage"
|
|
x:DataType="vm:WorkspacePageViewModel">
|
|
<StackPanel Margin="24,20" Spacing="6">
|
|
<TextBlock Text="{Binding Name}" FontSize="22" FontWeight="SemiBold"/>
|
|
<TextBlock Text="{Binding FullPath}" Opacity="0.6" FontSize="12"/>
|
|
</StackPanel>
|
|
</UserControl>
|