├── .gitattributes ├── .gitignore ├── CryptoDashboard ├── CryptoDashboard.sln └── CryptoDashboard │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── CryptoDashboard.csproj │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ ├── Resources │ └── HeadImage.JPG │ └── packages.config ├── OnlineClassDashboard ├── OnlineClassDashboard.sln └── OnlineClassDashboard │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── OnlineClassDashboard.csproj │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ ├── Resources │ └── HeadImage.png │ └── packages.config ├── Podcast ├── Podcast.sln └── Podcast │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── Podcast.csproj │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ ├── Resources │ └── Back1.png │ └── packages.config ├── ProjectM └── Client │ └── ProjectM │ ├── ProjectM.sln │ ├── ProjectM │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── Components │ │ └── AppBootstapper.cs │ ├── Models │ │ ├── InviteUserItem.cs │ │ ├── Messages │ │ │ └── SwitchPageMessage.cs │ │ ├── ProjectCardItemBase.cs │ │ ├── ProjectCardMultiplePictureItem.cs │ │ ├── ProjectCardSinglePictureItem.cs │ │ ├── ProjectCardTextItem.cs │ │ ├── ProjectItem.cs │ │ └── UserItem.cs │ ├── ProjectM.csproj │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ ├── TemplateSelectors │ │ └── ProjectCardItemTemplateSelector.cs │ ├── ViewModels │ │ ├── Shell │ │ │ ├── HomeViewModel.cs │ │ │ ├── MembersViewModel.cs │ │ │ ├── MessagesViewModel.cs │ │ │ ├── ProjectsViewModel.cs │ │ │ ├── SettingsViewModel.cs │ │ │ └── TasksViewModel.cs │ │ ├── ShellViewModel.cs │ │ ├── SignInSignUp │ │ │ ├── SignInViewModel.cs │ │ │ └── SignUpViewModel.cs │ │ └── SignInSignUpViewModel.cs │ ├── Views │ │ ├── Shell │ │ │ ├── HomeView.xaml │ │ │ ├── MembersView.xaml │ │ │ ├── MessagesView.xaml │ │ │ ├── ProjectsView.xaml │ │ │ ├── SettingsView.xaml │ │ │ └── TasksView.xaml │ │ ├── ShellView.xaml │ │ ├── SignInSignUp │ │ │ ├── SignInView.xaml │ │ │ └── SignUpView.xaml │ │ └── SignInSignUpView.xaml │ └── packages.config │ └── SharedLibraries │ ├── ProjectM.Shared │ ├── Components │ │ ├── Environments.cs │ │ ├── Fields.cs │ │ └── Logger.cs │ ├── Contracts │ │ └── ILogger.cs │ ├── Enums │ │ ├── AppTheme.cs │ │ └── ProjectCardPriority.cs │ ├── ProjectM.Shared.csproj │ ├── Properties │ │ └── AssemblyInfo.cs │ └── packages.config │ └── ProjectM.UI │ ├── Collection.xaml │ ├── Components │ ├── ThemeManager.cs │ └── ViewModelBase.cs │ ├── Contracts │ └── IThemeManager.cs │ ├── Converters │ └── TransparentBrushConverter.cs │ ├── ProjectM.UI.csproj │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ ├── Resources │ ├── Converters.xaml │ ├── Fonts │ │ └── ProjectMIcon.ttf │ └── Images │ │ ├── background_1.png │ │ ├── background_2.png │ │ ├── background_3.png │ │ ├── background_4.png │ │ ├── headimage_1.png │ │ ├── headimage_2.png │ │ ├── headimage_3.png │ │ ├── headimage_4.png │ │ ├── logo.png │ │ └── sign_in_background.jpeg │ ├── Styles │ ├── ButtonStyle.xaml │ ├── ComboBoxStyle.xaml │ ├── DropDownStyle.xaml │ ├── GroupBoxStyle.xaml │ ├── LabelStyle.xaml │ ├── ListBoxStyle.xaml │ ├── PasswordBoxStyle.xaml │ ├── SearchBoxStyle.xaml │ ├── SwitchStyle.xaml │ ├── TextBoxStyle.xaml │ ├── ToggleButtonStyle.xaml │ └── WindowXStyle.xaml │ ├── Themes │ ├── Dark.xaml │ ├── Generic.xaml │ └── Light.xaml │ └── packages.config ├── ProjectManagement ├── ProjectManagement.sln └── ProjectManagement │ ├── App.config │ ├── App.xaml │ ├── App.xaml.cs │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ ├── ProjectManagement.csproj │ ├── Properties │ ├── AssemblyInfo.cs │ ├── Resources.Designer.cs │ ├── Resources.resx │ ├── Settings.Designer.cs │ └── Settings.settings │ ├── Resources │ └── Images │ │ └── header.jpg │ └── packages.config └── SteamRedesign ├── SteamRedesign.sln └── SteamRedesign ├── App.config ├── App.xaml ├── App.xaml.cs ├── MainWindow.xaml ├── MainWindow.xaml.cs ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs ├── Resources.resx ├── Settings.Designer.cs └── Settings.settings ├── Resources ├── CallofDuty.png ├── HogwartsLegacy.png ├── MassEffect.png ├── Stray.png └── iconfont.ttf ├── SteamRedesign.csproj └── packages.config /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.2.32630.192 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CryptoDashboard", "CryptoDashboard\CryptoDashboard.csproj", "{02A2314D-F8E6-4FC0-BE81-725FF6328D07}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {02A2314D-F8E6-4FC0-BE81-725FF6328D07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {02A2314D-F8E6-4FC0-BE81-725FF6328D07}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {02A2314D-F8E6-4FC0-BE81-725FF6328D07}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {02A2314D-F8E6-4FC0-BE81-725FF6328D07}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {09AE2822-5AAF-4BAC-A0AA-6C646B27058A} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace CryptoDashboard 10 | { 11 | /// 12 | /// App.xaml 的交互逻辑 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard/CryptoDashboard.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {02A2314D-F8E6-4FC0-BE81-725FF6328D07} 8 | WinExe 9 | CryptoDashboard 10 | CryptoDashboard 11 | v4.7.2 12 | 512 13 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 14 | 4 15 | true 16 | true 17 | 18 | 19 | AnyCPU 20 | true 21 | full 22 | false 23 | bin\Debug\ 24 | DEBUG;TRACE 25 | prompt 26 | 4 27 | 28 | 29 | AnyCPU 30 | pdbonly 31 | true 32 | bin\Release\ 33 | TRACE 34 | prompt 35 | 4 36 | 37 | 38 | 39 | ..\packages\Panuon.WPF.1.0.0\lib\net472\Panuon.WPF.dll 40 | 41 | 42 | ..\packages\Panuon.WPF.UI.1.0.6\lib\net472\Panuon.WPF.UI.dll 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 4.0 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | MSBuild:Compile 62 | Designer 63 | 64 | 65 | MSBuild:Compile 66 | Designer 67 | 68 | 69 | App.xaml 70 | Code 71 | 72 | 73 | MainWindow.xaml 74 | Code 75 | 76 | 77 | 78 | 79 | Code 80 | 81 | 82 | True 83 | True 84 | Resources.resx 85 | 86 | 87 | True 88 | Settings.settings 89 | True 90 | 91 | 92 | ResXFileCodeGenerator 93 | Resources.Designer.cs 94 | 95 | 96 | 97 | SettingsSingleFileGenerator 98 | Settings.Designer.cs 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using Panuon.WPF; 2 | using Panuon.WPF.UI; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Collections.ObjectModel; 6 | using System.ComponentModel; 7 | using System.Linq; 8 | using System.Text; 9 | using System.Threading.Tasks; 10 | using System.Windows; 11 | using System.Windows.Controls; 12 | using System.Windows.Data; 13 | using System.Windows.Documents; 14 | using System.Windows.Input; 15 | using System.Windows.Media; 16 | using System.Windows.Media.Imaging; 17 | using System.Windows.Navigation; 18 | using System.Windows.Shapes; 19 | 20 | namespace CryptoDashboard 21 | { 22 | /// 23 | /// MainWindow.xaml 的交互逻辑 24 | /// 25 | public partial class MainWindow : WindowX 26 | { 27 | public MainWindow() 28 | { 29 | InitializeComponent(); 30 | 31 | IcItems.ItemsSource = new ObservableCollection() 32 | { 33 | new Model1() 34 | { 35 | DisplayName = "Total Liquidity", 36 | Value = "$ 2603805.5", 37 | AccentBrush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#ED6F86")), 38 | Icon = "\ue941", 39 | }, 40 | new Model1() 41 | { 42 | DisplayName = "Daily Volume", 43 | Value = "$ 260805.5", 44 | AccentBrush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#13b9ff")), 45 | Icon = "\ue943", 46 | }, 47 | new Model1() 48 | { 49 | DisplayName = "Liquidity", 50 | Value = "26805.5", 51 | AccentBrush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#8751e3")), 52 | Icon = "\ue945", 53 | }, 54 | new Model1() 55 | { 56 | DisplayName = "Total", 57 | Value = "2605.5", 58 | AccentBrush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#b95684")), 59 | Icon = "\ue947", 60 | }, 61 | }; 62 | 63 | LsbItems2.ItemsSource = new ObservableCollection() 64 | { 65 | new Model2() 66 | { 67 | Property1 = "21.05.10", 68 | Property2 = "1.125798", 69 | Property3 = "0.2655", 70 | Property4 = "0x23rA...", 71 | IsRaise = true, 72 | }, 73 | new Model2() 74 | { 75 | Property1 = "21.05.10", 76 | Property2 = "1.125798", 77 | Property3 = "0.2655", 78 | Property4 = "0x23rA...", 79 | }, 80 | new Model2() 81 | { 82 | Property1 = "21.05.10", 83 | Property2 = "1.125798", 84 | Property3 = "0.2655", 85 | Property4 = "0x23rA...", 86 | IsRaise = true, 87 | }, 88 | new Model2() 89 | { 90 | Property1 = "21.05.10", 91 | Property2 = "1.125798", 92 | Property3 = "0.2655", 93 | Property4 = "0x23rA...", 94 | }, 95 | }; 96 | } 97 | 98 | private void ListBoxItem_MouseDoubleClick(object sender, MouseButtonEventArgs e) 99 | { 100 | 101 | } 102 | } 103 | 104 | public class Model1 105 | : NotifyPropertyChangedBase 106 | { 107 | public Brush AccentBrush { get => _accentBrush; set => Set(ref _accentBrush, value); } 108 | private Brush _accentBrush; 109 | 110 | public string DisplayName { get => _displayName; set => Set(ref _displayName, value); } 111 | private string _displayName; 112 | 113 | public string Icon { get => _icon; set => Set(ref _icon, value); } 114 | private string _icon; 115 | 116 | public string Value { get => _value; set => Set(ref _value, value); } 117 | private string _value; 118 | } 119 | 120 | public class Model2 121 | : NotifyPropertyChangedBase 122 | { 123 | public string Property1 { get => _property1; set => Set(ref _property1, value); } 124 | private string _property1; 125 | 126 | public string Property2 { get => _property2; set => Set(ref _property2, value); } 127 | private string _property2; 128 | 129 | public string Property3 { get => _property3; set => Set(ref _property3, value); } 130 | private string _property3; 131 | 132 | public bool IsRaise { get => _isRaise; set => Set(ref _isRaise, value); } 133 | private bool _isRaise; 134 | 135 | public string Property4 { get => _property4; set => Set(ref _property4, value); } 136 | private string _property4; 137 | 138 | } 139 | 140 | } 141 | -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System.Windows; 6 | 7 | // 有关程序集的一般信息由以下 8 | // 控制。更改这些特性值可修改 9 | // 与程序集关联的信息。 10 | [assembly: AssemblyTitle("CryptoDashboard")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("")] 14 | [assembly: AssemblyProduct("CryptoDashboard")] 15 | [assembly: AssemblyCopyright("Copyright © 2022")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | // 将 ComVisible 设置为 false 会使此程序集中的类型 20 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 21 | //请将此类型的 ComVisible 特性设置为 true。 22 | [assembly: ComVisible(false)] 23 | 24 | //若要开始生成可本地化的应用程序,请设置 25 | //.csproj 文件中的 CultureYouAreCodingWith 26 | //例如,如果您在源文件中使用的是美国英语, 27 | //使用的是美国英语,请将 设置为 en-US。 然后取消 28 | //对以下 NeutralResourceLanguage 特性的注释。 更新 29 | //以下行中的“en-US”以匹配项目文件中的 UICulture 设置。 30 | 31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 32 | 33 | 34 | [assembly: ThemeInfo( 35 | ResourceDictionaryLocation.None, //主题特定资源词典所处位置 36 | //(未在页面中找到资源时使用, 37 | //或应用程序资源字典中找到时使用) 38 | ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置 39 | //(未在页面中找到资源时使用, 40 | //、应用程序或任何主题专用资源字典中找到时使用) 41 | )] 42 | 43 | 44 | // 程序集的版本信息由下列四个值组成: 45 | // 46 | // 主版本 47 | // 次版本 48 | // 生成号 49 | // 修订号 50 | // 51 | //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 52 | //通过使用 "*",如下所示: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("1.0.0.0")] 55 | [assembly: AssemblyFileVersion("1.0.0.0")] 56 | -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本: 4.0.30319.42000 5 | // 6 | // 对此文件的更改可能导致不正确的行为,如果 7 | // 重新生成代码,则所做更改将丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace CryptoDashboard.Properties 12 | { 13 | 14 | 15 | /// 16 | /// 强类型资源类,用于查找本地化字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// 返回此类使用的缓存 ResourceManager 实例。 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CryptoDashboard.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// 重写当前线程的 CurrentUICulture 属性,对 56 | /// 使用此强类型资源类的所有资源查找执行重写。 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace CryptoDashboard.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard/Resources/HeadImage.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Panuon/Panuon.WPF.UI-Cases/d1306d29758ac47b71a5e048c1edbb871a0684c1/CryptoDashboard/CryptoDashboard/Resources/HeadImage.JPG -------------------------------------------------------------------------------- /CryptoDashboard/CryptoDashboard/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /OnlineClassDashboard/OnlineClassDashboard.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.2.32616.157 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OnlineClassDashboard", "OnlineClassDashboard\OnlineClassDashboard.csproj", "{AB12C9D7-C5ED-4CB5-81E4-6C6C6DD73C9F}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {AB12C9D7-C5ED-4CB5-81E4-6C6C6DD73C9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {AB12C9D7-C5ED-4CB5-81E4-6C6C6DD73C9F}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {AB12C9D7-C5ED-4CB5-81E4-6C6C6DD73C9F}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {AB12C9D7-C5ED-4CB5-81E4-6C6C6DD73C9F}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {8DBBB69E-0724-4836-B011-2945AC95476A} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /OnlineClassDashboard/OnlineClassDashboard/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /OnlineClassDashboard/OnlineClassDashboard/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /OnlineClassDashboard/OnlineClassDashboard/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace OnlineClassDashboard 10 | { 11 | /// 12 | /// App.xaml 的交互逻辑 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /OnlineClassDashboard/OnlineClassDashboard/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using Panuon.WPF; 2 | using Panuon.WPF.UI; 3 | 4 | namespace OnlineClassDashboard 5 | { 6 | /// 7 | /// MainWindow.xaml 的交互逻辑 8 | /// 9 | public partial class MainWindow : WindowX 10 | { 11 | public MainWindow() 12 | { 13 | InitializeComponent(); 14 | 15 | var model1 = new Model() 16 | { 17 | DisplayName = "Item 1", 18 | Description = "You have a class in 32 min." 19 | }; 20 | Lsbi1.Content = model1; 21 | 22 | var model2 = new Model() 23 | { 24 | DisplayName = "Item 2", 25 | Description = "You have a class in 32 min." 26 | }; 27 | Lsbi2.Content = model2; 28 | 29 | var model3 = new Model() 30 | { 31 | DisplayName = "Item 3", 32 | Description = "You have a class in 32 min." 33 | }; 34 | Lsbi3.Content = model3; 35 | 36 | var model4 = new Model() 37 | { 38 | DisplayName = "Item 4", 39 | Description = "You have a class in 32 min." 40 | }; 41 | Lsbi4.Content = model4; 42 | 43 | model4.DisplayName = "Item 4.4"; 44 | } 45 | } 46 | 47 | public class Model 48 | : NotifyPropertyChangedBase 49 | { 50 | #region DisplayName 51 | public string DisplayName { get => _displayName; set => Set(ref _displayName, value); } 52 | private string _displayName; 53 | #endregion 54 | 55 | #region Description 56 | public string Description { get => _description; set => Set(ref _description, value); } 57 | private string _description; 58 | #endregion 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /OnlineClassDashboard/OnlineClassDashboard/OnlineClassDashboard.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {AB12C9D7-C5ED-4CB5-81E4-6C6C6DD73C9F} 8 | WinExe 9 | OnlineClassDashboard 10 | OnlineClassDashboard 11 | v4.7.2 12 | 512 13 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 14 | 4 15 | true 16 | true 17 | 18 | 19 | AnyCPU 20 | true 21 | full 22 | false 23 | bin\Debug\ 24 | DEBUG;TRACE 25 | prompt 26 | 4 27 | 28 | 29 | AnyCPU 30 | pdbonly 31 | true 32 | bin\Release\ 33 | TRACE 34 | prompt 35 | 4 36 | 37 | 38 | 39 | ..\packages\Panuon.WPF.1.0.0\lib\net472\Panuon.WPF.dll 40 | 41 | 42 | ..\packages\Panuon.WPF.UI.1.0.5\lib\net472\Panuon.WPF.UI.dll 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 4.0 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | MSBuild:Compile 62 | Designer 63 | 64 | 65 | MSBuild:Compile 66 | Designer 67 | 68 | 69 | App.xaml 70 | Code 71 | 72 | 73 | MainWindow.xaml 74 | Code 75 | 76 | 77 | 78 | 79 | Code 80 | 81 | 82 | True 83 | True 84 | Resources.resx 85 | 86 | 87 | True 88 | Settings.settings 89 | True 90 | 91 | 92 | ResXFileCodeGenerator 93 | Resources.Designer.cs 94 | 95 | 96 | 97 | SettingsSingleFileGenerator 98 | Settings.Designer.cs 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /OnlineClassDashboard/OnlineClassDashboard/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System.Windows; 6 | 7 | // 有关程序集的一般信息由以下 8 | // 控制。更改这些特性值可修改 9 | // 与程序集关联的信息。 10 | [assembly: AssemblyTitle("OnlineClassDashboard")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("")] 14 | [assembly: AssemblyProduct("OnlineClassDashboard")] 15 | [assembly: AssemblyCopyright("Copyright © 2022")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | // 将 ComVisible 设置为 false 会使此程序集中的类型 20 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 21 | //请将此类型的 ComVisible 特性设置为 true。 22 | [assembly: ComVisible(false)] 23 | 24 | //若要开始生成可本地化的应用程序,请设置 25 | //.csproj 文件中的 CultureYouAreCodingWith 26 | //例如,如果您在源文件中使用的是美国英语, 27 | //使用的是美国英语,请将 设置为 en-US。 然后取消 28 | //对以下 NeutralResourceLanguage 特性的注释。 更新 29 | //以下行中的“en-US”以匹配项目文件中的 UICulture 设置。 30 | 31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 32 | 33 | 34 | [assembly: ThemeInfo( 35 | ResourceDictionaryLocation.None, //主题特定资源词典所处位置 36 | //(未在页面中找到资源时使用, 37 | //或应用程序资源字典中找到时使用) 38 | ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置 39 | //(未在页面中找到资源时使用, 40 | //、应用程序或任何主题专用资源字典中找到时使用) 41 | )] 42 | 43 | 44 | // 程序集的版本信息由下列四个值组成: 45 | // 46 | // 主版本 47 | // 次版本 48 | // 生成号 49 | // 修订号 50 | // 51 | //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 52 | //通过使用 "*",如下所示: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("1.0.0.0")] 55 | [assembly: AssemblyFileVersion("1.0.0.0")] 56 | -------------------------------------------------------------------------------- /OnlineClassDashboard/OnlineClassDashboard/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本: 4.0.30319.42000 5 | // 6 | // 对此文件的更改可能导致不正确的行为,如果 7 | // 重新生成代码,则所做更改将丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace OnlineClassDashboard.Properties 12 | { 13 | 14 | 15 | /// 16 | /// 强类型资源类,用于查找本地化字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// 返回此类使用的缓存 ResourceManager 实例。 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OnlineClassDashboard.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// 重写当前线程的 CurrentUICulture 属性,对 56 | /// 使用此强类型资源类的所有资源查找执行重写。 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /OnlineClassDashboard/OnlineClassDashboard/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace OnlineClassDashboard.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /OnlineClassDashboard/OnlineClassDashboard/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /OnlineClassDashboard/OnlineClassDashboard/Resources/HeadImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Panuon/Panuon.WPF.UI-Cases/d1306d29758ac47b71a5e048c1edbb871a0684c1/OnlineClassDashboard/OnlineClassDashboard/Resources/HeadImage.png -------------------------------------------------------------------------------- /OnlineClassDashboard/OnlineClassDashboard/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /Podcast/Podcast.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.2.32616.157 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Podcast", "Podcast\Podcast.csproj", "{4D89EF49-C769-44EB-9486-F8E4BE68C41B}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {4D89EF49-C769-44EB-9486-F8E4BE68C41B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {4D89EF49-C769-44EB-9486-F8E4BE68C41B}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {4D89EF49-C769-44EB-9486-F8E4BE68C41B}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {4D89EF49-C769-44EB-9486-F8E4BE68C41B}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {26283D3B-FCA1-4ACD-9FD6-9D8ACF2A44C5} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Podcast/Podcast/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Podcast/Podcast/App.xaml: -------------------------------------------------------------------------------- 1 |  7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Podcast/Podcast/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace Podcast 10 | { 11 | /// 12 | /// App.xaml 的交互逻辑 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Podcast/Podcast/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using Panuon.WPF.UI; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | using System.Windows.Controls; 9 | using System.Windows.Data; 10 | using System.Windows.Documents; 11 | using System.Windows.Input; 12 | using System.Windows.Media; 13 | using System.Windows.Media.Imaging; 14 | using System.Windows.Navigation; 15 | using System.Windows.Shapes; 16 | 17 | namespace Podcast 18 | { 19 | /// 20 | /// MainWindow.xaml 的交互逻辑 21 | /// 22 | public partial class MainWindow : WindowX 23 | { 24 | public MainWindow() 25 | { 26 | InitializeComponent(); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Podcast/Podcast/Podcast.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {4D89EF49-C769-44EB-9486-F8E4BE68C41B} 8 | WinExe 9 | Podcast 10 | Podcast 11 | v4.7.2 12 | 512 13 | {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 14 | 4 15 | true 16 | true 17 | 18 | 19 | AnyCPU 20 | true 21 | full 22 | false 23 | bin\Debug\ 24 | DEBUG;TRACE 25 | prompt 26 | 4 27 | 28 | 29 | AnyCPU 30 | pdbonly 31 | true 32 | bin\Release\ 33 | TRACE 34 | prompt 35 | 4 36 | 37 | 38 | 39 | ..\packages\Panuon.WPF.1.0.0\lib\net472\Panuon.WPF.dll 40 | 41 | 42 | ..\packages\Panuon.WPF.UI.1.0.5\lib\net472\Panuon.WPF.UI.dll 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 4.0 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | MSBuild:Compile 62 | Designer 63 | 64 | 65 | MSBuild:Compile 66 | Designer 67 | 68 | 69 | App.xaml 70 | Code 71 | 72 | 73 | MainWindow.xaml 74 | Code 75 | 76 | 77 | 78 | 79 | Code 80 | 81 | 82 | True 83 | True 84 | Resources.resx 85 | 86 | 87 | True 88 | Settings.settings 89 | True 90 | 91 | 92 | ResXFileCodeGenerator 93 | Resources.Designer.cs 94 | 95 | 96 | 97 | SettingsSingleFileGenerator 98 | Settings.Designer.cs 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /Podcast/Podcast/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System.Windows; 6 | 7 | // 有关程序集的一般信息由以下 8 | // 控制。更改这些特性值可修改 9 | // 与程序集关联的信息。 10 | [assembly: AssemblyTitle("Podcast")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("")] 14 | [assembly: AssemblyProduct("Podcast")] 15 | [assembly: AssemblyCopyright("Copyright © 2022")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | // 将 ComVisible 设置为 false 会使此程序集中的类型 20 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 21 | //请将此类型的 ComVisible 特性设置为 true。 22 | [assembly: ComVisible(false)] 23 | 24 | //若要开始生成可本地化的应用程序,请设置 25 | //.csproj 文件中的 CultureYouAreCodingWith 26 | //例如,如果您在源文件中使用的是美国英语, 27 | //使用的是美国英语,请将 设置为 en-US。 然后取消 28 | //对以下 NeutralResourceLanguage 特性的注释。 更新 29 | //以下行中的“en-US”以匹配项目文件中的 UICulture 设置。 30 | 31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 32 | 33 | 34 | [assembly: ThemeInfo( 35 | ResourceDictionaryLocation.None, //主题特定资源词典所处位置 36 | //(未在页面中找到资源时使用, 37 | //或应用程序资源字典中找到时使用) 38 | ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置 39 | //(未在页面中找到资源时使用, 40 | //、应用程序或任何主题专用资源字典中找到时使用) 41 | )] 42 | 43 | 44 | // 程序集的版本信息由下列四个值组成: 45 | // 46 | // 主版本 47 | // 次版本 48 | // 生成号 49 | // 修订号 50 | // 51 | //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 52 | //通过使用 "*",如下所示: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("1.0.0.0")] 55 | [assembly: AssemblyFileVersion("1.0.0.0")] 56 | -------------------------------------------------------------------------------- /Podcast/Podcast/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本: 4.0.30319.42000 5 | // 6 | // 对此文件的更改可能导致不正确的行为,如果 7 | // 重新生成代码,则所做更改将丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Podcast.Properties 12 | { 13 | 14 | 15 | /// 16 | /// 强类型资源类,用于查找本地化字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// 返回此类使用的缓存 ResourceManager 实例。 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Podcast.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// 重写当前线程的 CurrentUICulture 属性,对 56 | /// 使用此强类型资源类的所有资源查找执行重写。 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Podcast/Podcast/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /Podcast/Podcast/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Podcast.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Podcast/Podcast/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Podcast/Podcast/Resources/Back1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Panuon/Panuon.WPF.UI-Cases/d1306d29758ac47b71a5e048c1edbb871a0684c1/Podcast/Podcast/Resources/Back1.png -------------------------------------------------------------------------------- /Podcast/Podcast/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.2.32802.462 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectM", "ProjectM\ProjectM.csproj", "{B62CF77B-3201-4ED9-8742-7CFCBC550EB4}" 7 | EndProject 8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SharedLibraries", "SharedLibraries", "{D8D50CB0-6445-49FB-8E11-09E1C70F5808}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectM.UI", "SharedLibraries\ProjectM.UI\ProjectM.UI.csproj", "{67BD90EE-1972-4B50-8C4D-D33CEB46D758}" 11 | EndProject 12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectM.Shared", "SharedLibraries\ProjectM.Shared\ProjectM.Shared.csproj", "{95BCF3DA-DB5F-4E1F-873D-9A670B90871E}" 13 | EndProject 14 | Global 15 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 16 | Debug|Any CPU = Debug|Any CPU 17 | Release|Any CPU = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {B62CF77B-3201-4ED9-8742-7CFCBC550EB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 21 | {B62CF77B-3201-4ED9-8742-7CFCBC550EB4}.Debug|Any CPU.Build.0 = Debug|Any CPU 22 | {B62CF77B-3201-4ED9-8742-7CFCBC550EB4}.Release|Any CPU.ActiveCfg = Release|Any CPU 23 | {B62CF77B-3201-4ED9-8742-7CFCBC550EB4}.Release|Any CPU.Build.0 = Release|Any CPU 24 | {67BD90EE-1972-4B50-8C4D-D33CEB46D758}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 25 | {67BD90EE-1972-4B50-8C4D-D33CEB46D758}.Debug|Any CPU.Build.0 = Debug|Any CPU 26 | {67BD90EE-1972-4B50-8C4D-D33CEB46D758}.Release|Any CPU.ActiveCfg = Release|Any CPU 27 | {67BD90EE-1972-4B50-8C4D-D33CEB46D758}.Release|Any CPU.Build.0 = Release|Any CPU 28 | {95BCF3DA-DB5F-4E1F-873D-9A670B90871E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 29 | {95BCF3DA-DB5F-4E1F-873D-9A670B90871E}.Debug|Any CPU.Build.0 = Debug|Any CPU 30 | {95BCF3DA-DB5F-4E1F-873D-9A670B90871E}.Release|Any CPU.ActiveCfg = Release|Any CPU 31 | {95BCF3DA-DB5F-4E1F-873D-9A670B90871E}.Release|Any CPU.Build.0 = Release|Any CPU 32 | EndGlobalSection 33 | GlobalSection(SolutionProperties) = preSolution 34 | HideSolutionNode = FALSE 35 | EndGlobalSection 36 | GlobalSection(NestedProjects) = preSolution 37 | {67BD90EE-1972-4B50-8C4D-D33CEB46D758} = {D8D50CB0-6445-49FB-8E11-09E1C70F5808} 38 | {95BCF3DA-DB5F-4E1F-873D-9A670B90871E} = {D8D50CB0-6445-49FB-8E11-09E1C70F5808} 39 | EndGlobalSection 40 | GlobalSection(ExtensibilityGlobals) = postSolution 41 | SolutionGuid = {7D09B277-3AFA-433D-9040-4C8DB0BD7F28} 42 | EndGlobalSection 43 | EndGlobal 44 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/App.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | 14 | 15 | /ProjectM.UI;component/Resources/Fonts/#ProjectMIcon 16 | 17 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | 9 | namespace ProjectM 10 | { 11 | /// 12 | /// App.xaml 的交互逻辑 13 | /// 14 | public partial class App : Application 15 | { 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Components/AppBootstapper.cs: -------------------------------------------------------------------------------- 1 | using Caliburn.Micro; 2 | using ProjectM.Shared; 3 | using ProjectM.UI; 4 | using ProjectM.ViewModels; 5 | using System; 6 | using System.Collections.Generic; 7 | using System.ComponentModel.Composition; 8 | using System.ComponentModel.Composition.Hosting; 9 | using System.ComponentModel.Composition.Primitives; 10 | using System.Linq; 11 | using System.Reflection; 12 | using System.Text; 13 | using System.Threading.Tasks; 14 | using System.Windows.Threading; 15 | 16 | namespace ProjectM.Components 17 | { 18 | public class AppBootstrapper 19 | : BootstrapperBase 20 | { 21 | #region Fields 22 | private CompositionContainer _container; 23 | 24 | private IWindowManager _windowManager; 25 | 26 | private IEventAggregator _eventAggregator; 27 | 28 | private ILogger _logger; 29 | 30 | private IThemeManager _themeManager; 31 | #endregion 32 | 33 | #region Ctor 34 | public AppBootstrapper() 35 | { 36 | Initialize(); 37 | } 38 | #endregion 39 | 40 | #region Overrides 41 | protected override void Configure() 42 | { 43 | var aggregateCatalog = new AggregateCatalog( 44 | AssemblySource.Instance.Select(x => new AssemblyCatalog(x)).OfType()); 45 | 46 | var batch = new CompositionBatch(); 47 | 48 | _container = new CompositionContainer(aggregateCatalog); 49 | 50 | batch.AddExportedValue(_container); 51 | 52 | //注入IoC 53 | _windowManager = new WindowManager(); 54 | batch.AddExportedValue(_windowManager); 55 | _eventAggregator = new EventAggregator(); 56 | batch.AddExportedValue(_eventAggregator); 57 | _logger = new Logger(); 58 | batch.AddExportedValue(_logger); 59 | _themeManager = new ThemeManager(); 60 | batch.AddExportedValue(_themeManager); 61 | 62 | _container.Compose(batch); 63 | } 64 | 65 | protected override void OnUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) 66 | { 67 | base.OnUnhandledException(sender, e); 68 | } 69 | 70 | protected override object GetInstance(Type service, string key) 71 | { 72 | string contract = string.IsNullOrEmpty(key) 73 | ? AttributedModelServices.GetContractName(service) 74 | : key; 75 | 76 | var exports = _container.GetExportedValues(contract); 77 | 78 | if (exports.Any()) 79 | return exports.First(); 80 | 81 | throw new Exception($"找不到实例 {contract}。"); 82 | } 83 | 84 | protected override IEnumerable GetAllInstances(Type service) 85 | { 86 | return _container.GetExportedValues(AttributedModelServices.GetContractName(service)); 87 | } 88 | 89 | protected override IEnumerable SelectAssemblies() 90 | { 91 | var assemblies = new List() 92 | { 93 | Assembly.GetEntryAssembly(), 94 | Assembly.GetExecutingAssembly(), 95 | }; 96 | 97 | return assemblies.Where(x => x != null) 98 | .Distinct(); 99 | } 100 | 101 | protected override void BuildUp(object instance) 102 | { 103 | _container.SatisfyImportsOnce((ComposablePart)instance); 104 | } 105 | 106 | protected override void OnStartup(object sender, System.Windows.StartupEventArgs e) 107 | { 108 | var viewModel = new SignInSignUpViewModel(); 109 | _windowManager.ShowWindow(viewModel); 110 | } 111 | #endregion 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Models/InviteUserItem.cs: -------------------------------------------------------------------------------- 1 | using Panuon.WPF; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ProjectM.Models 9 | { 10 | public class InviteUserItem 11 | : NotifyPropertyChangedBase 12 | { 13 | #region UserItem 14 | public UserItem User { get => _user; set => Set(ref _user, value); } 15 | private UserItem _user; 16 | #endregion 17 | 18 | #region IsExtend 19 | public bool IsExtend { get => _isExtend; set => Set(ref _isExtend, value); } 20 | private bool _isExtend; 21 | #endregion 22 | 23 | #region ExtendNumber 24 | public int ExtendNumber { get => _extendNumber; set => Set(ref _extendNumber, value); } 25 | private int _extendNumber; 26 | #endregion 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Models/Messages/SwitchPageMessage.cs: -------------------------------------------------------------------------------- 1 | namespace ProjectM 2 | { 3 | public enum SwitchPageMessageType 4 | { 5 | SignUp, 6 | SignIn, 7 | Shell, 8 | } 9 | 10 | public class SwitchPageMessage 11 | { 12 | public SwitchPageMessage(SwitchPageMessageType pageType) 13 | { 14 | PageType = pageType; 15 | } 16 | 17 | public SwitchPageMessageType PageType { get; } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Models/ProjectCardItemBase.cs: -------------------------------------------------------------------------------- 1 | using Panuon.WPF; 2 | using ProjectM.Shared; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Collections.ObjectModel; 6 | using System.Linq; 7 | using System.Text; 8 | using System.Threading.Tasks; 9 | 10 | namespace ProjectM.Models 11 | { 12 | public abstract class ProjectCardItemBase 13 | : NotifyPropertyChangedBase 14 | { 15 | #region DisplayName 16 | public string DisplayName { get => _displayName; set => Set(ref _displayName, value); } 17 | private string _displayName; 18 | #endregion 19 | 20 | #region Priority 21 | public ProjectCardPriority Priority { get => _priority; set => Set(ref _priority, value); } 22 | private ProjectCardPriority _priority; 23 | #endregion 24 | 25 | #region InviteUserItems 26 | public ObservableCollection InviteUserItems { get => _inviteUserItems; set => Set(ref _inviteUserItems, value); } 27 | private ObservableCollection _inviteUserItems; 28 | #endregion 29 | 30 | #region Comments 31 | public int Comments { get => _comments; set => Set(ref _comments, value); } 32 | private int _comments; 33 | #endregion 34 | 35 | #region Files 36 | public int Files { get => _files; set => Set(ref _files, value); } 37 | private int _files; 38 | #endregion 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Models/ProjectCardMultiplePictureItem.cs: -------------------------------------------------------------------------------- 1 | namespace ProjectM.Models 2 | { 3 | public class ProjectCardMultiplePictureItem 4 | : ProjectCardItemBase 5 | { 6 | #region Image1 7 | public string Image1 { get => _image1; set => Set(ref _image1, value); } 8 | private string _image1; 9 | #endregion 10 | 11 | #region Image2 12 | public string Image2 { get => _image2; set => Set(ref _image2, value); } 13 | private string _image2; 14 | #endregion 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Models/ProjectCardSinglePictureItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ProjectM.Models 8 | { 9 | public class ProjectCardSinglePictureItem 10 | : ProjectCardItemBase 11 | { 12 | #region Image 13 | public string Image { get => _image; set => Set(ref _image, value); } 14 | private string _image; 15 | #endregion 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Models/ProjectCardTextItem.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace ProjectM.Models 8 | { 9 | public class ProjectCardTextItem 10 | : ProjectCardItemBase 11 | { 12 | #region Text 13 | public string Text { get => _text; set => Set(ref _text, value); } 14 | private string _text; 15 | #endregion 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Models/ProjectItem.cs: -------------------------------------------------------------------------------- 1 | using Panuon.WPF; 2 | using System.Collections.ObjectModel; 3 | using System.Windows.Media; 4 | 5 | namespace ProjectM.Models 6 | { 7 | public class ProjectItem 8 | : NotifyPropertyChangedBase 9 | { 10 | #region ProjectName 11 | public string ProjectName { get => _projectName; set => Set(ref _projectName, value); } 12 | private string _projectName; 13 | #endregion 14 | 15 | #region AccentBrush 16 | public Brush AccentBrush { get => _accentBrush; set => Set(ref _accentBrush, value); } 17 | private Brush _accentBrush; 18 | #endregion 19 | 20 | #region InviteUserItems 21 | public ObservableCollection InviteUserItems { get => _inviteUserItems; set => Set(ref _inviteUserItems, value); } 22 | private ObservableCollection _inviteUserItems; 23 | #endregion 24 | 25 | #region ToDoCardItems 26 | public ObservableCollection ToDoCardItems { get => _toDoCardItems; set => Set(ref _toDoCardItems, value); } 27 | private ObservableCollection _toDoCardItems; 28 | #endregion 29 | 30 | #region OnProgressCardItems 31 | public ObservableCollection OnProgressCardItems { get => _onProgressCardItems; set => Set(ref _onProgressCardItems, value); } 32 | private ObservableCollection _onProgressCardItems; 33 | #endregion 34 | 35 | #region DoneCardItems 36 | public ObservableCollection DoneCardItems { get => _doneCardItems; set => Set(ref _doneCardItems, value); } 37 | private ObservableCollection _doneCardItems; 38 | #endregion 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Models/UserItem.cs: -------------------------------------------------------------------------------- 1 | using Panuon.WPF; 2 | 3 | namespace ProjectM.Models 4 | { 5 | public class UserItem 6 | : NotifyPropertyChangedBase 7 | { 8 | #region Name 9 | public string Name { get => _name; set => Set(ref _name, value); } 10 | private string _name; 11 | #endregion 12 | 13 | #region HeadImage 14 | public string HeadImage { get => _headImage; set => Set(ref _headImage, value); } 15 | private string _headImage; 16 | #endregion 17 | 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System.Windows; 6 | 7 | // 有关程序集的一般信息由以下 8 | // 控制。更改这些特性值可修改 9 | // 与程序集关联的信息。 10 | [assembly: AssemblyTitle("ProjectM")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("")] 14 | [assembly: AssemblyProduct("ProjectM")] 15 | [assembly: AssemblyCopyright("Copyright © 2022")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | // 将 ComVisible 设置为 false 会使此程序集中的类型 20 | //对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 21 | //请将此类型的 ComVisible 特性设置为 true。 22 | [assembly: ComVisible(false)] 23 | 24 | //若要开始生成可本地化的应用程序,请设置 25 | //.csproj 文件中的 CultureYouAreCodingWith 26 | //例如,如果您在源文件中使用的是美国英语, 27 | //使用的是美国英语,请将 设置为 en-US。 然后取消 28 | //对以下 NeutralResourceLanguage 特性的注释。 更新 29 | //以下行中的“en-US”以匹配项目文件中的 UICulture 设置。 30 | 31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 32 | 33 | 34 | [assembly: ThemeInfo( 35 | ResourceDictionaryLocation.None, //主题特定资源词典所处位置 36 | //(未在页面中找到资源时使用, 37 | //或应用程序资源字典中找到时使用) 38 | ResourceDictionaryLocation.SourceAssembly //常规资源词典所处位置 39 | //(未在页面中找到资源时使用, 40 | //、应用程序或任何主题专用资源字典中找到时使用) 41 | )] 42 | 43 | 44 | // 程序集的版本信息由下列四个值组成: 45 | // 46 | // 主版本 47 | // 次版本 48 | // 生成号 49 | // 修订号 50 | // 51 | //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 52 | //通过使用 "*",如下所示: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("1.0.0.0")] 55 | [assembly: AssemblyFileVersion("1.0.0.0")] 56 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // 此代码由工具生成。 4 | // 运行时版本: 4.0.30319.42000 5 | // 6 | // 对此文件的更改可能导致不正确的行为,如果 7 | // 重新生成代码,则所做更改将丢失。 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ProjectM.Properties 12 | { 13 | 14 | 15 | /// 16 | /// 强类型资源类,用于查找本地化字符串等。 17 | /// 18 | // 此类是由 StronglyTypedResourceBuilder 19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen 21 | // (以 /str 作为命令选项),或重新生成 VS 项目。 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// 返回此类使用的缓存 ResourceManager 实例。 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProjectM.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// 重写当前线程的 CurrentUICulture 属性,对 56 | /// 使用此强类型资源类的所有资源查找执行重写。 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace ProjectM.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/TemplateSelectors/ProjectCardItemTemplateSelector.cs: -------------------------------------------------------------------------------- 1 | using ProjectM.Models; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | using System.Windows; 8 | using System.Windows.Controls; 9 | 10 | namespace ProjectM 11 | { 12 | public class ProjectCardItemTemplateSelector 13 | : DataTemplateSelector 14 | { 15 | #region Overrieds 16 | public override DataTemplate SelectTemplate(object item, DependencyObject container) 17 | { 18 | var contentPresenter = container as ContentPresenter; 19 | var contentControl = contentPresenter.TemplatedParent as ContentControl; 20 | 21 | if(item is ProjectCardTextItem) 22 | { 23 | return contentControl.FindResource("ProjectCardTextItemDataTemplate") as DataTemplate; 24 | } 25 | else if(item is ProjectCardSinglePictureItem) 26 | { 27 | return contentControl.FindResource("ProjectCardSinglePictureItemDataTemplate") as DataTemplate; 28 | } 29 | else if(item is ProjectCardMultiplePictureItem) 30 | { 31 | return contentControl.FindResource("ProjectCardMultiplePictureItemDataTemplate") as DataTemplate; 32 | } 33 | return null; 34 | } 35 | #endregion 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/ViewModels/Shell/HomeViewModel.cs: -------------------------------------------------------------------------------- 1 | using ProjectM.UI; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ProjectM.ViewModels.Shell 9 | { 10 | public class HomeViewModel 11 | : ViewModelBase 12 | { 13 | public HomeViewModel() 14 | { 15 | 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/ViewModels/Shell/MembersViewModel.cs: -------------------------------------------------------------------------------- 1 | using ProjectM.UI; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ProjectM.ViewModels.Shell 9 | { 10 | public class MembersViewModel 11 | : ViewModelBase 12 | { 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/ViewModels/Shell/MessagesViewModel.cs: -------------------------------------------------------------------------------- 1 | using ProjectM.UI; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ProjectM.ViewModels.Shell 9 | { 10 | public class MessagesViewModel 11 | : ViewModelBase 12 | { 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/ViewModels/Shell/ProjectsViewModel.cs: -------------------------------------------------------------------------------- 1 | using ProjectM.Models; 2 | using ProjectM.UI; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace ProjectM.ViewModels.Shell 10 | { 11 | public class ProjectsViewModel 12 | : ViewModelBase 13 | { 14 | #region Properties 15 | 16 | #region CurrentProject 17 | public ProjectItem CurrentProject { get => _currentProject; set => Set(ref _currentProject, value); } 18 | private ProjectItem _currentProject; 19 | #endregion 20 | 21 | 22 | #endregion 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/ViewModels/Shell/SettingsViewModel.cs: -------------------------------------------------------------------------------- 1 | using ProjectM.UI; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ProjectM.ViewModels.Shell 9 | { 10 | public class SettingsViewModel 11 | : ViewModelBase 12 | { 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/ViewModels/Shell/TasksViewModel.cs: -------------------------------------------------------------------------------- 1 | using ProjectM.UI; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace ProjectM.ViewModels.Shell 9 | { 10 | public class TasksViewModel 11 | : ViewModelBase 12 | { 13 | 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/ViewModels/SignInSignUp/SignInViewModel.cs: -------------------------------------------------------------------------------- 1 | using Caliburn.Micro; 2 | using ProjectM.UI; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace ProjectM.ViewModels.SignInSignUp 10 | { 11 | public class SignInViewModel 12 | : ViewModelBase 13 | { 14 | #region Ctor 15 | public SignInViewModel() 16 | { 17 | } 18 | #endregion 19 | 20 | #region Methods 21 | public void SignUp() 22 | { 23 | EventAggregator.PublishOnUIThread(new SwitchPageMessage(SwitchPageMessageType.SignUp)); 24 | } 25 | 26 | public void SignIn() 27 | { 28 | EventAggregator.PublishOnUIThread(new SwitchPageMessage(SwitchPageMessageType.Shell)); 29 | } 30 | #endregion 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/ViewModels/SignInSignUp/SignUpViewModel.cs: -------------------------------------------------------------------------------- 1 | using Caliburn.Micro; 2 | using ProjectM.UI; 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | using System.Windows.Threading; 9 | 10 | namespace ProjectM.ViewModels.SignInSignUp 11 | { 12 | public class SignUpViewModel 13 | : ViewModelBase 14 | { 15 | #region Fields 16 | private DispatcherTimer _dispatcherTimer; 17 | #endregion 18 | 19 | #region Ctor 20 | public SignUpViewModel() 21 | { 22 | _dispatcherTimer = new DispatcherTimer() 23 | { 24 | Interval = TimeSpan.FromSeconds(1), 25 | }; 26 | _dispatcherTimer.Tick += DispatcherTimer_Tick; 27 | } 28 | #endregion 29 | 30 | #region Properties 31 | public bool IsSendCodeEnabled { get => _isSendCodeEnabled; set => Set(ref _isSendCodeEnabled, value); } 32 | private bool _isSendCodeEnabled = true; 33 | 34 | public int? SendCodeCountdown { get => _sendCodeCountdown; set => Set(ref _sendCodeCountdown, value); } 35 | private int? _sendCodeCountdown = null; 36 | 37 | public string Email { get => _email; set => Set(ref _email, value); } 38 | private string _email; 39 | #endregion 40 | 41 | #region Methods 42 | public void SendCode() 43 | { 44 | SendCodeCountdown = 60; 45 | IsSendCodeEnabled = false; 46 | _dispatcherTimer.Start(); 47 | } 48 | 49 | public void SignIn() 50 | { 51 | EventAggregator.PublishOnUIThread(new SwitchPageMessage(SwitchPageMessageType.SignIn)); 52 | } 53 | 54 | public void SignUp() 55 | { 56 | 57 | } 58 | #endregion 59 | 60 | #region Event Handlers 61 | private void DispatcherTimer_Tick(object sender, EventArgs e) 62 | { 63 | if (SendCodeCountdown is int countdown 64 | && countdown > 0) 65 | { 66 | SendCodeCountdown--; 67 | } 68 | else 69 | { 70 | SendCodeCountdown = null; 71 | IsSendCodeEnabled = true; 72 | _dispatcherTimer.Stop(); 73 | } 74 | } 75 | #endregion 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/ViewModels/SignInSignUpViewModel.cs: -------------------------------------------------------------------------------- 1 | using Caliburn.Micro; 2 | using ProjectM.UI; 3 | using ProjectM.ViewModels.SignInSignUp; 4 | 5 | namespace ProjectM.ViewModels 6 | { 7 | public class SignInSignUpViewModel 8 | : ViewModelBase, IHandle 9 | { 10 | #region Fields 11 | private SignInViewModel _signInViewModel; 12 | 13 | private SignUpViewModel _signUpViewModel; 14 | #endregion 15 | 16 | #region Ctor 17 | public SignInSignUpViewModel() 18 | { 19 | EventAggregator.Subscribe(this); 20 | 21 | _signInViewModel = new SignInViewModel(); 22 | _signUpViewModel = new SignUpViewModel(); 23 | 24 | CurrentViewModel = _signInViewModel; 25 | } 26 | #endregion 27 | 28 | #region Properties 29 | public ViewModelBase CurrentViewModel { get => _currentViewModel; set => Set(ref _currentViewModel, value); } 30 | private ViewModelBase _currentViewModel; 31 | #endregion 32 | 33 | #region Methods 34 | public void SwitchToSignUp() 35 | { 36 | } 37 | 38 | public void Handle(SwitchPageMessage message) 39 | { 40 | switch (message.PageType) 41 | { 42 | case SwitchPageMessageType.SignIn: 43 | CurrentViewModel = _signInViewModel; 44 | break; 45 | case SwitchPageMessageType.SignUp: 46 | CurrentViewModel = _signUpViewModel; 47 | break; 48 | case SwitchPageMessageType.Shell: 49 | var viewModel = new ShellViewModel(); 50 | WindowManager.ShowWindow(viewModel); 51 | TryClose(); 52 | break; 53 | } 54 | } 55 | #endregion 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Views/Shell/HomeView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Views/Shell/MembersView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Views/Shell/MessagesView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Views/Shell/SettingsView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Views/Shell/TasksView.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ProjectM/Client/ProjectM/ProjectM/Views/SignInSignUp/SignInView.xaml: -------------------------------------------------------------------------------- 1 |  14 | 15 | 17 | 20 | 21 | 23 | 34 | 35 | 38 | 41 | 42 | 44 |