ebakhtin 6 月之前
当前提交
c930e8c704
共有 100 个文件被更改,包括 1894 次插入0 次删除
  1. 二进制
      .vs/333/FileContentIndex/3dedf0f2-885c-48f5-b8fa-316d51467a25.vsidx
  2. 二进制
      .vs/333/v17/.wsuo
  3. 23 0
      .vs/333/v17/DocumentLayout.json
  4. 二进制
      .vs/ProjectEvaluation/wpf_data_csv.metadata.v7.bin
  5. 二进制
      .vs/ProjectEvaluation/wpf_data_csv.projects.v7.bin
  6. 二进制
      .vs/ProjectEvaluation/wpf_filtering.metadata.v7.bin
  7. 二进制
      .vs/ProjectEvaluation/wpf_filtering.projects.v7.bin
  8. 二进制
      .vs/ProjectEvaluation/wpf_search_sort.metadata.v7.bin
  9. 二进制
      .vs/ProjectEvaluation/wpf_search_sort.projects.v7.bin
  10. 二进制
      .vs/ProjectEvaluation/wpf_template.metadata.v7.bin
  11. 二进制
      .vs/ProjectEvaluation/wpf_template.projects.v7.bin
  12. 3 0
      .vs/ProjectSettings.json
  13. 7 0
      .vs/VSWorkspaceState.json
  14. 二进制
      .vs/slnx.sqlite
  15. 二进制
      .vs/wpf_app/v17/.suo
  16. 104 0
      .vs/wpf_app/v17/DocumentLayout.json
  17. 二进制
      .vs/wpf_data_csv/FileContentIndex/4bd0ad83-385e-457f-b031-e945216ef341.vsidx
  18. 二进制
      .vs/wpf_data_csv/FileContentIndex/627afe6b-0a6c-4df6-a40e-64241d4425d0.vsidx
  19. 二进制
      .vs/wpf_data_csv/FileContentIndex/bed431ba-6255-4633-9c59-4193b8319f33.vsidx
  20. 二进制
      .vs/wpf_data_csv/FileContentIndex/cba83413-0261-4743-bb10-4e3c148b36e1.vsidx
  21. 二进制
      .vs/wpf_data_csv/FileContentIndex/f29c5c1e-274b-420f-9c5c-6534b2d9813d.vsidx
  22. 二进制
      .vs/wpf_filtering/DesignTimeBuild/.dtbcache.v2
  23. 二进制
      .vs/wpf_filtering/FileContentIndex/113a89ff-a931-4e8d-862a-01f3c86a443e.vsidx
  24. 二进制
      .vs/wpf_filtering/FileContentIndex/1e28b45a-6157-45cd-b72a-ab2c1210d6de.vsidx
  25. 二进制
      .vs/wpf_filtering/FileContentIndex/55b5e32a-b0cc-42fd-bb18-c0fcf1e53857.vsidx
  26. 二进制
      .vs/wpf_filtering/FileContentIndex/775bafd6-96fc-4bc6-8617-fd9c392a1fae.vsidx
  27. 二进制
      .vs/wpf_filtering/FileContentIndex/906c827d-01d6-4857-9ef5-875cc3e54e2c.vsidx
  28. 二进制
      .vs/wpf_filtering/v17/.futdcache.v2
  29. 二进制
      .vs/wpf_filtering/v17/.suo
  30. 91 0
      .vs/wpf_filtering/v17/DocumentLayout.json
  31. 二进制
      .vs/wpf_search_sort/DesignTimeBuild/.dtbcache.v2
  32. 二进制
      .vs/wpf_search_sort/FileContentIndex/bca124dd-befa-4245-b46e-5ba3fe3ad3f3.vsidx
  33. 二进制
      .vs/wpf_search_sort/v17/.futdcache.v2
  34. 二进制
      .vs/wpf_search_sort/v17/.suo
  35. 二进制
      .vs/wpf_template/FileContentIndex/0668294a-0a57-4f75-a6ca-1ad8b3f8a3e8.vsidx
  36. 二进制
      .vs/wpf_template/FileContentIndex/1a079fb6-60c8-4ed0-9e56-f41f8de9336a.vsidx
  37. 二进制
      .vs/wpf_template/FileContentIndex/1a6fb3aa-084d-4e24-bffd-ecd71e93fa24.vsidx
  38. 二进制
      .vs/wpf_template/FileContentIndex/2ae58230-2823-4c45-affb-9864c9a0915d.vsidx
  39. 二进制
      .vs/wpf_template/FileContentIndex/cd8c661f-c4c5-4b79-aa00-86662615a392.vsidx
  40. 9 0
      App.xaml
  41. 14 0
      App.xaml.cs
  42. 10 0
      AssemblyInfo.cs
  43. 196 0
      MainWindow.xaml
  44. 114 0
      MainWindow.xaml.cs
  45. 71 0
      Model/CSVDataProvider.cs
  46. 65 0
      Model/JSONDataProvider.cs
  47. 212 0
      Model/PhoneClass.cs
  48. 二进制
      assets/nagievlogo1.jpg
  49. 二进制
      assets/nagievlogo2.jpg
  50. 二进制
      bin/Debug/net8.0-windows/CsvHelper.dll
  51. 13 0
      bin/Debug/net8.0-windows/products.csv
  52. 123 0
      bin/Debug/net8.0-windows/products.json
  53. 41 0
      bin/Debug/net8.0-windows/wpf_data_csv.deps.json
  54. 二进制
      bin/Debug/net8.0-windows/wpf_data_csv.dll
  55. 二进制
      bin/Debug/net8.0-windows/wpf_data_csv.exe
  56. 二进制
      bin/Debug/net8.0-windows/wpf_data_csv.pdb
  57. 18 0
      bin/Debug/net8.0-windows/wpf_data_csv.runtimeconfig.json
  58. 二进制
      img/defaultPicture.jpg
  59. 二进制
      img/result.png
  60. 4 0
      obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs
  61. 71 0
      obj/Debug/net8.0-windows/App.g.cs
  62. 71 0
      obj/Debug/net8.0-windows/App.g.i.cs
  63. 二进制
      obj/Debug/net8.0-windows/MainWindow.baml
  64. 180 0
      obj/Debug/net8.0-windows/MainWindow.g.cs
  65. 180 0
      obj/Debug/net8.0-windows/MainWindow.g.i.cs
  66. 二进制
      obj/Debug/net8.0-windows/apphost.exe
  67. 二进制
      obj/Debug/net8.0-windows/ref/wpf_data_csv.dll
  68. 二进制
      obj/Debug/net8.0-windows/ref/wpf_filtering.dll
  69. 二进制
      obj/Debug/net8.0-windows/ref/wpf_search_sort.dll
  70. 二进制
      obj/Debug/net8.0-windows/ref/wpf_template.dll
  71. 二进制
      obj/Debug/net8.0-windows/refint/wpf_data_csv.dll
  72. 二进制
      obj/Debug/net8.0-windows/refint/wpf_filtering.dll
  73. 二进制
      obj/Debug/net8.0-windows/refint/wpf_search_sort.dll
  74. 二进制
      obj/Debug/net8.0-windows/refint/wpf_template.dll
  75. 25 0
      obj/Debug/net8.0-windows/wpf_app.AssemblyInfo.cs
  76. 1 0
      obj/Debug/net8.0-windows/wpf_app.AssemblyInfoInputs.cache
  77. 13 0
      obj/Debug/net8.0-windows/wpf_app.GeneratedMSBuildEditorConfig.editorconfig
  78. 6 0
      obj/Debug/net8.0-windows/wpf_app.GlobalUsings.g.cs
  79. 二进制
      obj/Debug/net8.0-windows/wpf_app.assets.cache
  80. 二进制
      obj/Debug/net8.0-windows/wpf_app.csproj.AssemblyReference.cache
  81. 20 0
      obj/Debug/net8.0-windows/wpf_app_MarkupCompile.i.cache
  82. 25 0
      obj/Debug/net8.0-windows/wpf_csv_data.AssemblyInfo.cs
  83. 1 0
      obj/Debug/net8.0-windows/wpf_csv_data.AssemblyInfoInputs.cache
  84. 13 0
      obj/Debug/net8.0-windows/wpf_csv_data.GeneratedMSBuildEditorConfig.editorconfig
  85. 6 0
      obj/Debug/net8.0-windows/wpf_csv_data.GlobalUsings.g.cs
  86. 二进制
      obj/Debug/net8.0-windows/wpf_csv_data.assets.cache
  87. 二进制
      obj/Debug/net8.0-windows/wpf_csv_data.csproj.AssemblyReference.cache
  88. 20 0
      obj/Debug/net8.0-windows/wpf_csv_data_MarkupCompile.i.cache
  89. 0 0
      obj/Debug/net8.0-windows/wpf_data.4BEC58CB.Up2Date
  90. 25 0
      obj/Debug/net8.0-windows/wpf_data_csv.AssemblyInfo.cs
  91. 1 0
      obj/Debug/net8.0-windows/wpf_data_csv.AssemblyInfoInputs.cache
  92. 13 0
      obj/Debug/net8.0-windows/wpf_data_csv.GeneratedMSBuildEditorConfig.editorconfig
  93. 6 0
      obj/Debug/net8.0-windows/wpf_data_csv.GlobalUsings.g.cs
  94. 二进制
      obj/Debug/net8.0-windows/wpf_data_csv.assets.cache
  95. 二进制
      obj/Debug/net8.0-windows/wpf_data_csv.csproj.AssemblyReference.cache
  96. 0 0
      obj/Debug/net8.0-windows/wpf_data_csv.csproj.BuildWithSkipAnalyzers
  97. 1 0
      obj/Debug/net8.0-windows/wpf_data_csv.csproj.CoreCompileInputs.cache
  98. 46 0
      obj/Debug/net8.0-windows/wpf_data_csv.csproj.FileListAbsolute.txt
  99. 28 0
      obj/Debug/net8.0-windows/wpf_data_csv.designer.deps.json
  100. 24 0
      obj/Debug/net8.0-windows/wpf_data_csv.designer.runtimeconfig.json

二进制
.vs/333/FileContentIndex/3dedf0f2-885c-48f5-b8fa-316d51467a25.vsidx


二进制
.vs/333/v17/.wsuo


+ 23 - 0
.vs/333/v17/DocumentLayout.json

@@ -0,0 +1,23 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\333\\",
+  "Documents": [],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": -1,
+          "Children": [
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{1c64b9c2-e352-428e-a56d-0ace190b99a6}"
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

二进制
.vs/ProjectEvaluation/wpf_data_csv.metadata.v7.bin


二进制
.vs/ProjectEvaluation/wpf_data_csv.projects.v7.bin


二进制
.vs/ProjectEvaluation/wpf_filtering.metadata.v7.bin


二进制
.vs/ProjectEvaluation/wpf_filtering.projects.v7.bin


二进制
.vs/ProjectEvaluation/wpf_search_sort.metadata.v7.bin


二进制
.vs/ProjectEvaluation/wpf_search_sort.projects.v7.bin


二进制
.vs/ProjectEvaluation/wpf_template.metadata.v7.bin


二进制
.vs/ProjectEvaluation/wpf_template.projects.v7.bin


+ 3 - 0
.vs/ProjectSettings.json

@@ -0,0 +1,3 @@
+{
+  "CurrentProjectSetting": null
+}

+ 7 - 0
.vs/VSWorkspaceState.json

@@ -0,0 +1,7 @@
+{
+  "ExpandedNodes": [
+    "",
+    "\\Model"
+  ],
+  "PreviewInSolutionExplorer": false
+}

二进制
.vs/slnx.sqlite


二进制
.vs/wpf_app/v17/.suo


+ 104 - 0
.vs/wpf_app/v17/DocumentLayout.json

@@ -0,0 +1,104 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\wpf_app\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_data_csv.csproj|c:\\users\\boooo\\onedrive\\desktop\\oap_labs\\wpf_app\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
+      "RelativeMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_data_csv.csproj|solutionrelative:mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_data_csv.csproj|c:\\users\\boooo\\onedrive\\desktop\\oap_labs\\wpf_app\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_data_csv.csproj|solutionrelative:mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_data_csv.csproj|c:\\users\\boooo\\onedrive\\desktop\\oap_labs\\wpf_app\\model\\phoneclass.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_data_csv.csproj|solutionrelative:model\\phoneclass.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_data_csv.csproj|c:\\users\\boooo\\onedrive\\desktop\\oap_labs\\wpf_app\\model\\jsondataprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_data_csv.csproj|solutionrelative:model\\jsondataprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_data_csv.csproj|c:\\users\\boooo\\onedrive\\desktop\\oap_labs\\wpf_app\\model\\csvdataprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_data_csv.csproj|solutionrelative:model\\csvdataprovider.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 4,
+          "Children": [
+            {
+              "$type": "Document",
+              "DocumentIndex": 4,
+              "Title": "CSVDataProvider.cs",
+              "DocumentMoniker": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\wpf_app\\Model\\CSVDataProvider.cs",
+              "RelativeDocumentMoniker": "Model\\CSVDataProvider.cs",
+              "ToolTip": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\wpf_app\\Model\\CSVDataProvider.cs",
+              "RelativeToolTip": "Model\\CSVDataProvider.cs",
+              "ViewState": "AQIAADcAAAAAAAAAAAAcwEUAAAAFAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-05-06T17:35:22.457Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "JSONDataProvider.cs",
+              "DocumentMoniker": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\wpf_app\\Model\\JSONDataProvider.cs",
+              "RelativeDocumentMoniker": "Model\\JSONDataProvider.cs",
+              "ToolTip": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\wpf_app\\Model\\JSONDataProvider.cs",
+              "RelativeToolTip": "Model\\JSONDataProvider.cs",
+              "ViewState": "AQIAADcAAAAAAAAAAAAcwEEAAAAAAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-05-06T17:35:22.49Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 2,
+              "Title": "PhoneClass.cs",
+              "DocumentMoniker": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\wpf_app\\Model\\PhoneClass.cs",
+              "RelativeDocumentMoniker": "Model\\PhoneClass.cs",
+              "ToolTip": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\wpf_app\\Model\\PhoneClass.cs",
+              "RelativeToolTip": "Model\\PhoneClass.cs",
+              "ViewState": "AQIAACUAAAAAAAAAAAAuwDkAAABUAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-05-06T17:35:22.492Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "MainWindow.xaml.cs",
+              "DocumentMoniker": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\wpf_app\\MainWindow.xaml.cs",
+              "RelativeDocumentMoniker": "MainWindow.xaml.cs",
+              "ToolTip": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\wpf_app\\MainWindow.xaml.cs",
+              "RelativeToolTip": "MainWindow.xaml.cs",
+              "ViewState": "AQIAADUAAAAAAAAAAAAIwEAAAAAJAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-05-06T17:35:22.494Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "MainWindow.xaml",
+              "DocumentMoniker": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\wpf_app\\MainWindow.xaml",
+              "RelativeDocumentMoniker": "MainWindow.xaml",
+              "ToolTip": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\wpf_app\\MainWindow.xaml",
+              "RelativeToolTip": "MainWindow.xaml",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
+              "WhenOpened": "2024-05-06T17:35:22.497Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

二进制
.vs/wpf_data_csv/FileContentIndex/4bd0ad83-385e-457f-b031-e945216ef341.vsidx


二进制
.vs/wpf_data_csv/FileContentIndex/627afe6b-0a6c-4df6-a40e-64241d4425d0.vsidx


二进制
.vs/wpf_data_csv/FileContentIndex/bed431ba-6255-4633-9c59-4193b8319f33.vsidx


二进制
.vs/wpf_data_csv/FileContentIndex/cba83413-0261-4743-bb10-4e3c148b36e1.vsidx


二进制
.vs/wpf_data_csv/FileContentIndex/f29c5c1e-274b-420f-9c5c-6534b2d9813d.vsidx


二进制
.vs/wpf_filtering/DesignTimeBuild/.dtbcache.v2


二进制
.vs/wpf_filtering/FileContentIndex/113a89ff-a931-4e8d-862a-01f3c86a443e.vsidx


二进制
.vs/wpf_filtering/FileContentIndex/1e28b45a-6157-45cd-b72a-ab2c1210d6de.vsidx


二进制
.vs/wpf_filtering/FileContentIndex/55b5e32a-b0cc-42fd-bb18-c0fcf1e53857.vsidx


二进制
.vs/wpf_filtering/FileContentIndex/775bafd6-96fc-4bc6-8617-fd9c392a1fae.vsidx


二进制
.vs/wpf_filtering/FileContentIndex/906c827d-01d6-4857-9ef5-875cc3e54e2c.vsidx


二进制
.vs/wpf_filtering/v17/.futdcache.v2


二进制
.vs/wpf_filtering/v17/.suo


+ 91 - 0
.vs/wpf_filtering/v17/DocumentLayout.json

@@ -0,0 +1,91 @@
+{
+  "Version": 1,
+  "WorkspaceRootPath": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\333\\",
+  "Documents": [
+    {
+      "AbsoluteMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_filtering.csproj|c:\\users\\boooo\\onedrive\\desktop\\oap_labs\\333\\readme.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}",
+      "RelativeMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_filtering.csproj|solutionrelative:readme.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_search_sort.csproj|c:\\users\\boooo\\onedrive\\desktop\\oap_labs\\333\\mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_search_sort.csproj|solutionrelative:mainwindow.xaml.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_search_sort.csproj|c:\\users\\boooo\\onedrive\\desktop\\oap_labs\\333\\mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}",
+      "RelativeMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_search_sort.csproj|solutionrelative:mainwindow.xaml||{F11ACC28-31D1-4C80-A34B-F4E09D3D753C}"
+    },
+    {
+      "AbsoluteMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_search_sort.csproj|c:\\users\\boooo\\onedrive\\desktop\\oap_labs\\333\\model\\phoneclass.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
+      "RelativeMoniker": "D:0:0:{70FBD942-628F-4E82-9DCE-F11802729737}|wpf_search_sort.csproj|solutionrelative:model\\phoneclass.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
+    }
+  ],
+  "DocumentGroupContainers": [
+    {
+      "Orientation": 0,
+      "VerticalTabListWidth": 256,
+      "DocumentGroups": [
+        {
+          "DockedWidth": 200,
+          "SelectedChildIndex": 4,
+          "Children": [
+            {
+              "$type": "Document",
+              "DocumentIndex": 3,
+              "Title": "PhoneClass.cs",
+              "DocumentMoniker": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\333\\Model\\PhoneClass.cs",
+              "RelativeDocumentMoniker": "Model\\PhoneClass.cs",
+              "ToolTip": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\333\\Model\\PhoneClass.cs",
+              "RelativeToolTip": "Model\\PhoneClass.cs",
+              "ViewState": "AQIAACQAAAAAAAAAAAAiwAAAAAAAAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-05-05T16:37:00.308Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 2,
+              "Title": "MainWindow.xaml",
+              "DocumentMoniker": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\333\\MainWindow.xaml",
+              "RelativeDocumentMoniker": "MainWindow.xaml",
+              "ToolTip": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\333\\MainWindow.xaml",
+              "RelativeToolTip": "MainWindow.xaml",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.003549|",
+              "WhenOpened": "2024-05-05T16:36:18.475Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 1,
+              "Title": "MainWindow.xaml.cs",
+              "DocumentMoniker": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\333\\MainWindow.xaml.cs",
+              "RelativeDocumentMoniker": "MainWindow.xaml.cs",
+              "ToolTip": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\333\\MainWindow.xaml.cs",
+              "RelativeToolTip": "MainWindow.xaml.cs",
+              "ViewState": "AQIAAE8AAAAAAAAAAAAswFgAAAAAAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
+              "WhenOpened": "2024-05-05T16:36:36.059Z",
+              "EditorCaption": ""
+            },
+            {
+              "$type": "Bookmark",
+              "Name": "ST:0:0:{1c64b9c2-e352-428e-a56d-0ace190b99a6}"
+            },
+            {
+              "$type": "Document",
+              "DocumentIndex": 0,
+              "Title": "readme.md",
+              "DocumentMoniker": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\333\\readme.md",
+              "RelativeDocumentMoniker": "readme.md",
+              "ToolTip": "C:\\Users\\boooo\\OneDrive\\Desktop\\oap_labs\\333\\readme.md",
+              "RelativeToolTip": "readme.md",
+              "ViewState": "AQIAACsAAAAAAAAAAAAYwFEAAAAWAAAA",
+              "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001818|",
+              "WhenOpened": "2024-05-05T16:35:22.795Z",
+              "EditorCaption": ""
+            }
+          ]
+        }
+      ]
+    }
+  ]
+}

二进制
.vs/wpf_search_sort/DesignTimeBuild/.dtbcache.v2


二进制
.vs/wpf_search_sort/FileContentIndex/bca124dd-befa-4245-b46e-5ba3fe3ad3f3.vsidx


二进制
.vs/wpf_search_sort/v17/.futdcache.v2


二进制
.vs/wpf_search_sort/v17/.suo


二进制
.vs/wpf_template/FileContentIndex/0668294a-0a57-4f75-a6ca-1ad8b3f8a3e8.vsidx


二进制
.vs/wpf_template/FileContentIndex/1a079fb6-60c8-4ed0-9e56-f41f8de9336a.vsidx


二进制
.vs/wpf_template/FileContentIndex/1a6fb3aa-084d-4e24-bffd-ecd71e93fa24.vsidx


二进制
.vs/wpf_template/FileContentIndex/2ae58230-2823-4c45-affb-9864c9a0915d.vsidx


二进制
.vs/wpf_template/FileContentIndex/cd8c661f-c4c5-4b79-aa00-86662615a392.vsidx


+ 9 - 0
App.xaml

@@ -0,0 +1,9 @@
+<Application x:Class="wpf_template.App"
+             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:local="clr-namespace:wpf_template"
+             StartupUri="MainWindow.xaml">
+    <Application.Resources>
+         
+    </Application.Resources>
+</Application>

+ 14 - 0
App.xaml.cs

@@ -0,0 +1,14 @@
+using System.Configuration;
+using System.Data;
+using System.Windows;
+
+namespace wpf_template
+{
+    /// <summary>
+    /// Interaction logic for App.xaml
+    /// </summary>
+    public partial class App : Application
+    {
+    }
+
+}

+ 10 - 0
AssemblyInfo.cs

@@ -0,0 +1,10 @@
+using System.Windows;
+
+[assembly: ThemeInfo(
+    ResourceDictionaryLocation.None,            //where theme specific resource dictionaries are located
+                                                //(used if a resource is not found in the page,
+                                                // or application resource dictionaries)
+    ResourceDictionaryLocation.SourceAssembly   //where the generic resource dictionary is located
+                                                //(used if a resource is not found in the page,
+                                                // app, or any theme specific resource dictionaries)
+)]

+ 196 - 0
MainWindow.xaml

@@ -0,0 +1,196 @@
+<Window x:Class="wpf_template.MainWindow"
+        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:local="clr-namespace:wpf_template"
+        mc:Ignorable="d"
+        Title="MainWindow" Height="450" Width="950">
+    
+    <Window.Resources>
+        <BitmapImage
+            x:Key='defaultImage'
+            UriSource="./img/defaultPicture.jpg"/>
+    </Window.Resources>
+
+    <Grid ShowGridLines="False">
+        <Grid.RowDefinitions>
+            <RowDefinition Height="auto"/>
+            <RowDefinition />
+            <RowDefinition Height="auto"/>
+        </Grid.RowDefinitions>
+        <Grid.ColumnDefinitions>
+            <ColumnDefinition Width="200"/>
+            <ColumnDefinition/>
+        </Grid.ColumnDefinitions>
+
+
+        <Image 
+            Source="assets/nagievlogo2.jpg"
+            Grid.Row="1"
+            Grid.RowSpan="2"
+            Margin="0 0 0 85"/>
+
+        <ListBox
+            Grid.Row="1"
+            Grid.Column="1"
+            Background="White"
+            ScrollViewer.HorizontalScrollBarVisibility="Disabled"
+            ItemsSource="{Binding ProductList}">
+            
+
+            <ListBox.ItemsPanel>
+                <ItemsPanelTemplate>
+                    <WrapPanel
+                        HorizontalAlignment="Center"/>
+                </ItemsPanelTemplate>
+            </ListBox.ItemsPanel>
+            
+            <ListBox.ItemTemplate>
+                <DataTemplate>
+                    <Border
+                        BorderThickness="1"
+                        BorderBrush="Black"
+                        CornerRadius="5">
+                        <Grid
+                            Margin="10"
+                            Width="300"
+                            HorizontalAlignment="Stretch">
+                            <Grid.ColumnDefinitions>
+                                <ColumnDefinition Width="64"/>
+                                <ColumnDefinition Width="*"/>
+                                <ColumnDefinition Width="*"/>
+                            </Grid.ColumnDefinitions>
+                            <Image
+                                Width="64"
+                                Height="64"
+                                Source="{Binding ImageBitmap,TargetNullValue={StaticResource defaultImage}}"/>
+                            <StackPanel
+                                Grid.Column="1"
+                                Margin="5"
+                                Orientation="Vertical"
+                                VerticalAlignment="Center">
+                                <TextBlock
+                                    Text="{Binding Company}"/>
+                                <TextBlock
+                                    Text="{Binding Title}"/>
+                            </StackPanel>
+                            <WrapPanel
+                                Grid.Column="2"
+                                VerticalAlignment="Center"
+                                HorizontalAlignment="Right">
+                                <Label
+                                    Content="Цена:"/>
+                                <TextBlock
+                                    Grid.Column="2"
+                                    HorizontalAlignment="Right"
+                                    VerticalAlignment="Center"
+                                    Text="{Binding Price}"/>
+                            </WrapPanel>
+                        </Grid>
+                    </Border>
+                </DataTemplate>
+            </ListBox.ItemTemplate>
+        </ListBox>
+
+        <StackPanel 
+            Orientation="Vertical"
+            Grid.RowSpan="3"
+            Grid.Row="2"
+            VerticalAlignment="Bottom">
+            <Button 
+            x:Name="ExitButton"
+            Content="Выход" 
+            Click="ExitButton_Click"
+            Height="50"/>
+        </StackPanel>
+
+        
+
+        <WrapPanel
+            Orientation="Horizontal"
+            Grid.Column="1"
+            MinHeight="50"
+            Margin="0 5 0 0">
+            <Label
+                Content="Категория:"
+                VerticalAlignment="Center"/>
+
+            <ComboBox
+                Name="CategoryFilterComboBox"
+                SelectionChanged="CategoryFilterComboBox_SelectionChanged"
+                VerticalAlignment="Center"
+                MinWidth="100"
+                SelectedIndex="0"
+                ItemsSource="{Binding CategoryList}">
+
+                <ComboBox.ItemTemplate>
+                    <DataTemplate>
+                        <Label
+                            Content="{Binding title}"/>
+                    </DataTemplate>
+                </ComboBox.ItemTemplate>
+            </ComboBox>
+
+            <Label
+                Content="Цена"/>
+            <ComboBox
+                Name ="PriceFilterComboBox"
+                SelectionChanged="PriceFilterComboBox_SelectionChanged"
+                VerticalAlignment="Center"
+                MinWidth="100"
+                SelectedIndex="0"
+                ItemsSource="{Binding ProductPrices}">
+                <ComboBox.ItemTemplate>
+                    <DataTemplate>
+                        <Label
+                            Content="{Binding title}"/>
+                    </DataTemplate>
+                </ComboBox.ItemTemplate>
+            </ComboBox>
+
+            <Label
+                Content="Компания"/>
+            <ComboBox
+                Name ="CompanyFilterComboBox"
+                SelectionChanged="CompanyFilterComboBox_SelectionChanged"
+                VerticalAlignment="Center"
+                MinWidth="100"
+                SelectedIndex="0"
+                ItemsSource="{Binding ProductCompanies}">
+                <ComboBox.ItemTemplate>
+                    <DataTemplate>
+                        <Label
+                            Content="{Binding title}"/>
+                    </DataTemplate>
+                </ComboBox.ItemTemplate>
+            </ComboBox>
+
+            <Label 
+                Content="Поиск" 
+                VerticalAlignment="Center"/>
+            <TextBox
+                Width="180"
+                VerticalAlignment="Center"
+                x:Name="SearchFilterTextBox"
+                KeyUp="SearchFilterTextBox_KeyUp"/>
+
+            <Label 
+                Content="Цена:" 
+                VerticalAlignment="Center"/>
+            <RadioButton
+                GroupName="Price"
+                Tag="1"
+                Content="по возрастанию"
+                IsChecked="True"
+                Checked="RadioButton_Checked"
+                VerticalAlignment="Center"/>
+            <RadioButton
+                GroupName="Price"
+                Tag="2"
+                Content="по убыванию"
+                Checked="RadioButton_Checked"
+                VerticalAlignment="Center"/>
+        </WrapPanel>
+    </Grid>
+</Window>

+ 114 - 0
MainWindow.xaml.cs

@@ -0,0 +1,114 @@
+using System.ComponentModel;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using wpf_template.Model;
+
+namespace wpf_template
+{
+    /// <summary>
+    /// Interaction logic for MainWindow.xaml
+    /// </summary>
+    /// 
+    public partial class MainWindow : Window, INotifyPropertyChanged
+    {
+        private IEnumerable<Product> _productList;
+        public IEnumerable<Product> ProductList
+        {
+            get
+            {
+                var res = _productList;
+                res = _productList
+                    .Where(p =>(selectedCategory == "Все категории" || p.Category == selectedCategory))
+                    .Where(p =>(selectedPrice == null || (p.Price>=selectedPrice.priceFrom && p.Price<selectedPrice.priceTo)))
+                    .Where(p =>(selectedCompany == "Все компании" || p.Company == selectedCompany));
+
+                if (searchFilter != "")
+                    res = res.Where(c => c.Title.IndexOf(searchFilter, StringComparison.OrdinalIgnoreCase) >= 0);
+
+                if (sortAsc) res = res.OrderBy(p => p.Price);
+                else res = res.OrderByDescending(p => p.Price);
+
+                return res;
+            }
+            set
+            {
+                _productList = value;
+            }
+        }
+        public List <ProductCategory> CategoryList { get; set; }
+        public List <ProductPrice> ProductPrices { get; set; }
+        public List <ProductCompany> ProductCompanies { get; set; }
+        string selectedCategory = "";
+        string selectedCompany = "";
+        private ProductPrice? selectedPrice = null;
+        private string searchFilter = "";
+        private bool sortAsc = true;
+        public MainWindow()
+        {
+            InitializeComponent();
+            DataContext = this;
+            Globals.dataProvider = new JSONDataProvider(); 
+            ProductList = Globals.dataProvider.GetProducts();
+            ProductPrices = Globals.dataProvider.GetPrices().ToList();
+            CategoryList = Globals.dataProvider.GetCategories().ToList();
+            CategoryList.Insert(0, new ProductCategory { title = "Все категории" });
+            ProductCompanies = Globals.dataProvider.GetCompanies().ToList();
+            ProductCompanies.Insert(0, new ProductCompany { title = "Все компании" });
+        }
+
+        private void ExitButton_Click(object sender, RoutedEventArgs e)
+        {
+            Application.Current.Shutdown();
+        }
+
+        private void CategoryFilterComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            selectedCategory = (CategoryFilterComboBox.SelectedItem as ProductCategory).title;
+            Invalidate();
+        }
+
+        private void PriceFilterComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            selectedPrice = PriceFilterComboBox.SelectedItem as ProductPrice;
+            Invalidate();
+        }
+
+        private void CompanyFilterComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
+        {
+            selectedCompany = (CompanyFilterComboBox.SelectedItem as ProductCompany).title;
+            Invalidate();
+        }
+
+        private void SearchFilterTextBox_KeyUp(object sender, KeyEventArgs e)
+        {
+            searchFilter = SearchFilterTextBox.Text;
+            Invalidate();
+        }
+
+        private void RadioButton_Checked(object sender, RoutedEventArgs e)
+        {
+            sortAsc = (sender as RadioButton).Tag.ToString() == "1";
+            Invalidate();
+        }
+
+        public event PropertyChangedEventHandler PropertyChanged;
+        private void Invalidate()
+        {
+            if (PropertyChanged != null)
+                PropertyChanged(this, new PropertyChangedEventArgs("ProductList"));
+        }
+    }
+
+    class Globals
+    {
+        public static IDataProvider dataProvider;
+    }
+}

+ 71 - 0
Model/CSVDataProvider.cs

@@ -0,0 +1,71 @@
+using CsvHelper;
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace wpf_template.Model
+{
+    public class CSVDataProvider : IDataProvider
+    {
+        private List<Product> productList;
+        public CSVDataProvider()
+        {
+            using (var reader = new StreamReader("./products.csv"))
+            {
+                using (var csv = new CsvReader(
+                    reader,
+                    CultureInfo.InvariantCulture))
+                {
+                    productList = csv.GetRecords<Product>().ToList();
+                }
+            }
+        }
+
+        public IEnumerable<Product> GetProducts()
+        {
+            return productList;
+        }
+
+        public IEnumerable<ProductCategory> GetCategories()
+        {
+            return new ProductCategory[]
+            {
+                new ProductCategory {title = "Смартфон"},
+                new ProductCategory {title = "Ноутбук"},
+                new ProductCategory {title = "Смарт-Часы"},
+                new ProductCategory {title = "Монитор"}
+            };
+        }
+
+        public IEnumerable<ProductPrice> GetPrices()
+        {
+            return new ProductPrice[]
+            {
+                new ProductPrice{title="Все цены", priceFrom = 0, priceTo = 999999},
+                new ProductPrice{title="До 10.000", priceFrom = 0, priceTo = 10000},
+                new ProductPrice{title="От 10.000 до 20.000", priceFrom = 10000, priceTo = 20000},
+                new ProductPrice{title="От 20.000 до 50.000", priceFrom = 20000, priceTo = 50000},
+                new ProductPrice{title="Дороже 50.000", priceFrom = 50000, priceTo = 999999 }
+            };
+        }
+        public IEnumerable<ProductCompany> GetCompanies()
+        {
+            return new ProductCompany[]
+            {
+                new ProductCompany{title = "Apple"},
+                new ProductCompany{title = "Xiaomi"},
+                new ProductCompany{title = "Huawei"},
+                new ProductCompany{title = "POCO"},
+                new ProductCompany{title = "Asus"},
+                new ProductCompany{title = "Lenovo"},
+                new ProductCompany{title = "Samsung"},
+                new ProductCompany{title = "Acer"},
+                new ProductCompany{title = "AOC"}
+            };
+        }
+    }
+}

+ 65 - 0
Model/JSONDataProvider.cs

@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.Serialization.Json;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace wpf_template.Model
+{
+    public class JSONDataProvider : IDataProvider
+    {
+        private List<Product> products;
+        public JSONDataProvider() 
+        {
+            var serializer = new DataContractJsonSerializer(typeof(Product[]));
+            using(var sr = new StreamReader("./products.json"))
+            {
+                products = ((Product[])serializer.ReadObject(sr.BaseStream)).ToList();
+            }
+        }
+        public IEnumerable<Product> GetProducts()
+        {
+            return products;
+        }
+
+        public IEnumerable<ProductCategory> GetCategories()
+        {
+            return new ProductCategory[]
+            {
+                new ProductCategory {title = "Смартфон"},
+                new ProductCategory {title = "Ноутбук"},
+                new ProductCategory {title = "Смарт-Часы"},
+                new ProductCategory {title = "Монитор"}
+            };
+        }
+
+        public IEnumerable<ProductPrice> GetPrices()
+        {
+            return new ProductPrice[]
+            {
+                new ProductPrice{title="Все цены", priceFrom = 0, priceTo = 999999},
+                new ProductPrice{title="До 10.000", priceFrom = 0, priceTo = 10000},
+                new ProductPrice{title="От 10.000 до 20.000", priceFrom = 10000, priceTo = 20000},
+                new ProductPrice{title="От 20.000 до 50.000", priceFrom = 20000, priceTo = 50000},
+                new ProductPrice{title="Дороже 50.000", priceFrom = 50000, priceTo = 999999 }
+            };
+        }
+        public IEnumerable<ProductCompany> GetCompanies()
+        {
+            return new ProductCompany[]
+            {
+                new ProductCompany{title = "Apple"},
+                new ProductCompany{title = "Xiaomi"},
+                new ProductCompany{title = "Huawei"},
+                new ProductCompany{title = "POCO"},
+                new ProductCompany{title = "Asus"},
+                new ProductCompany{title = "Lenovo"},
+                new ProductCompany{title = "Samsung"},
+                new ProductCompany{title = "Acer"},
+                new ProductCompany{title = "AOC"}
+            };
+        }
+    }
+}

+ 212 - 0
Model/PhoneClass.cs

@@ -0,0 +1,212 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Formats.Asn1;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Runtime.Serialization;
+using System.Text;
+using System.Threading.Tasks;
+using CsvHelper;
+
+namespace wpf_template.Model
+{
+    [DataContract]
+    public class Product
+    {
+        [DataMember]
+        public string Title { get; set; }
+        [DataMember]
+        public string Company { get; set; }
+        [DataMember]
+        public int Price { get; set; }
+        [DataMember]
+        public string Category { get; set; }
+        [DataMember]
+        public bool Existence {  get; set; }
+        [DataMember(Name = "ArrivalDate")]
+        private string? stringArrivalDate { get; set; }
+        [IgnoreDataMember]
+        public DateOnly? ArrivalDate
+        {
+            get
+            {
+                return stringArrivalDate == null ? null : DateOnly.Parse(stringArrivalDate);
+            }
+            set
+            {
+                stringArrivalDate = value.ToString();
+            }
+        }
+        [DataMember]
+        public double Rating { get; set; }
+        [DataMember]
+        public string Photo { get; set; }
+        [IgnoreDataMember]
+        public string ExistenceString
+        {
+            get {
+                return Existence ? "Да" : "Нет";
+            }
+        }
+        public Uri? ImageBitmap
+        {
+            get
+            {
+                var imageName = Environment.CurrentDirectory + "/img/" + (Photo ?? "");
+                return System.IO.File.Exists(imageName) ? new Uri(imageName) : null;
+            }
+        }
+    }
+
+    public class ProductCategory
+    {
+        public string title { get; set; }
+    }
+
+    public class ProductPrice
+    {
+        public string title { get; set; }
+        public int priceFrom { get; set; }
+        public int priceTo { get; set; }
+    }
+
+    public class ProductCompany
+    {
+        public string title { get; set; }
+    }
+
+    interface IDataProvider
+    {
+        IEnumerable<Product> GetProducts();
+        IEnumerable<ProductCategory> GetCategories();
+        IEnumerable<ProductPrice> GetPrices();
+        IEnumerable<ProductCompany> GetCompanies();
+    }
+
+    public class LocalDataProvider : IDataProvider
+    {
+        public IEnumerable<Product> GetProducts()
+        {
+            return new Product[]{
+            new Product
+            {
+                Category = "Смартфон",
+                Company = "Apple",
+                Title = "13 Pro Max",
+                Price = 84999
+            },
+            new Product
+            {
+                Category = "Смартфон",
+                Company = "Samsung",
+                Title = "S23",
+                Price = 89999
+            },
+            new Product
+            {
+                Category = "Смартфон",
+                Company = "Huawei",
+                Title = "Nova Y61",
+                Price = 9999
+            },
+            new Product
+            {
+                Category = "Смартфон",
+                Company = "POCO",
+                Title = "C51",
+                Price = 5599
+            },
+            new Product
+            {
+                Category = "Ноутбук",
+                Company = "Xiaomi",
+                Title = "RedmiBook 15",
+                Price = 49999
+            },
+            new Product
+            {
+                Category = "Ноутбук",
+                Company = "Asus",
+                Title = "Vivobook Go 15",
+                Price = 25999
+            },
+            new Product
+            {
+                Category = "Ноутбук",
+                Company = "Lenovo",
+                Title = "IdeaPad 1",
+                Price = 24999
+            },
+            new Product
+            {
+                Category = "Ноутбук",
+                Company = "Asus",
+                Title = "ExpertBook B1502",
+                Price = 32999
+            },
+            new Product
+            {
+                Category = "Смарт-Часы",
+                Company = "Apple",
+                Title = "SE 2023",
+                Price = 30599
+            },
+            new Product
+            {
+                Category = "Смарт-Часы",
+                Company = "Xiaomi",
+                Title = "Smart Band 8",
+                Price = 3999
+            },
+            new Product
+            {
+                Category = "Смарт-Часы",
+                Company = "Huawei",
+                Title = "Watch GT 4",
+                Price = 13999
+            },
+
+            };
+        }
+
+        public IEnumerable<ProductCategory> GetCategories()
+        {
+            return new ProductCategory[]
+            {
+                new ProductCategory {title = "Смартфон"},
+                new ProductCategory {title = "Ноутбук"},
+                new ProductCategory {title = "Смарт-Часы"},
+                new ProductCategory {title = "Монитор"}
+            };
+        }
+
+        public IEnumerable<ProductPrice> GetPrices()
+        {
+            return new ProductPrice[]
+            {
+                new ProductPrice{title="Все цены", priceFrom = 0, priceTo = 999999},
+                new ProductPrice{title="До 10.000", priceFrom = 0, priceTo = 10000},
+                new ProductPrice{title="От 10.000 до 20.000", priceFrom = 10000, priceTo = 20000},
+                new ProductPrice{title="От 20.000 до 50.000", priceFrom = 20000, priceTo = 50000},
+                new ProductPrice{title="Дороже 50.000", priceFrom = 50000, priceTo = 999999 }
+            };
+        }
+        public IEnumerable<ProductCompany> GetCompanies()
+        {
+            return new ProductCompany[]
+            {
+                new ProductCompany{title = "Apple"},
+                new ProductCompany{title = "Xiaomi"},
+                new ProductCompany{title = "Huawei"},
+                new ProductCompany{title = "POCO"},
+                new ProductCompany{title = "Asus"},
+                new ProductCompany{title = "Lenovo"},
+                new ProductCompany{title = "Samsung"},
+                new ProductCompany{title = "Acer"},
+                new ProductCompany{title = "AOC"}
+            };
+        }
+    }
+}

二进制
assets/nagievlogo1.jpg


二进制
assets/nagievlogo2.jpg


二进制
bin/Debug/net8.0-windows/CsvHelper.dll


+ 13 - 0
bin/Debug/net8.0-windows/products.csv

@@ -0,0 +1,13 @@
+Title,Company,Price,Category,Existence,ArrivalDate,Rating,Photo
+"Redmi A3","Xiaomi",6999,"Смартфон",True,2023-12-15,3.9,""
+"12","Xiaomi",44999,"Смартфон",True,2024-03-21,4.7,""
+"iPhone 11 Pro","Apple",48999,"Смартфон",False,2023-09-19,4.3,""
+"iPhone SE 2022","Apple",36999,"Смартфон",False,2023-10-25,4.1,""
+"Galaxy S22","Samsung",61299,"Смартфон",True,2024-02-21,4.8,""
+"Redmi Watch 2","Xiaomi",5299,"Смарт-Часы",True,2023-11-09,3.2,""
+"ExpertBook B1","Asus",33999,"Ноутбук",True,2023-01-09,4,""
+"MateBook D 15","Huawei",44999,"Ноутбук",False,2023-08-17,4.4,""
+"Watch SE 2022","Apple",29499,"Смарт-Часы",True,2023-08-29,3.8,""
+"R272ymix","Acer",10999,"Монитор",True,2023-11-11,4.6,""
+"27B3HM","AOC",12999,"Монитор",True,2024-04-05,4.7,""
+"Watch Ultra 49mm","Apple",75999,"Смарт-Часы",False,2023-05-06,4.8,""

+ 123 - 0
bin/Debug/net8.0-windows/products.json

@@ -0,0 +1,123 @@
+[
+    {
+        "Title":"Redmi A3",
+        "Company":"Xiaomi",
+        "Price": 6999,
+        "Category": "Смартфон",
+        "Existence": true,
+        "ArrivalDate": "2023-12-15",
+        "Rating": 3.9,
+        "Photo": null
+    },
+    {
+        "Title":"12",
+        "Company":"Xiaomi",
+        "Price": 44999,
+        "Category": "Смартфон",
+        "Existence": true,
+        "ArrivalDate": "2024-03-21",
+        "Rating": 4.7,
+        "Photo": null
+    },
+    {
+        "Title":"iPhone 11 Pro",
+        "Company":"Apple",
+        "Price": 48999,
+        "Category": "Смартфон",
+        "Existence": false,
+        "ArrivalDate": "2023-09-19",
+        "Rating": 4.3,
+        "Photo": null
+    },
+    {
+        "Title":"iPhone SE 2022",
+        "Company":"Apple",
+        "Price": 36999,
+        "Category": "Смартфон",
+        "Existence": false,
+        "ArrivalDate": "2023-10-25",
+        "Rating": 4.1,
+        "Photo": null
+    },
+    {
+        "Title":"Galaxy S22",
+        "Company":"Samsung",
+        "Price": 61299,
+        "Category": "Смартфон",
+        "Existence": true,
+        "ArrivalDate": "2024-02-21",
+        "Rating": 4.8,
+        "Photo": null
+    },
+    {
+        "Title":"Redmi Watch 2",
+        "Company":"Xiaomi",
+        "Price": 5299,
+        "Category": "Смарт-Часы",
+        "Existence": true,
+        "ArrivalDate": "2023-11-09",
+        "Rating": 3.2,
+        "Photo": null
+    },
+    {
+        "Title":"ExpertBook B1",
+        "Company":"Asus",
+        "Price": 33999,
+        "Category": "Ноутбук",
+        "Existence": true,
+        "ArrivalDate": "2023-01-09",
+        "Rating": 4,
+        "Photo": null
+    },
+    {
+        "Title":"MateBook D 15",
+        "Company":"Huawei",
+        "Price": 44999,
+        "Category": "Ноутбук",
+        "Existence": false,
+        "ArrivalDate": "2023-08-17",
+        "Rating": 4.4,
+        "Photo": null
+    },
+    {
+        "Title":"Watch SE 2022",
+        "Company":"Apple",
+        "Price": 29499,
+        "Category": "Смарт-Часы",
+        "Existence": true,
+        "ArrivalDate": "2023-08-29",
+        "Rating": 3.8,
+        "Photo": null
+    },
+    {
+        "Title":"R272ymix",
+        "Company":"Acer",
+        "Price": 10999,
+        "Category": "Монитор",
+        "Existence": true,
+        "ArrivalDate": "2023-11-11",
+        "Rating": 4.6,
+        "Photo": null
+    },
+    {
+        "Title":"27B3HM",
+        "Company":"AOC",
+        "Price": 12999,
+        "Category": "Монитор",
+        "Existence": true,
+        "ArrivalDate": "2024-04-05",
+        "Rating": 4.7,
+        "Photo": null
+    },
+    {
+        "Title":"Watch Ultra 49mm",
+        "Company":"Apple",
+        "Price": 75999,
+        "Category": "Смарт-Часы",
+        "Existence": false,
+        "ArrivalDate": "2023-05-06",
+        "Rating": 4.8,
+        "Photo": null
+    },
+
+]

+ 41 - 0
bin/Debug/net8.0-windows/wpf_data_csv.deps.json

@@ -0,0 +1,41 @@
+{
+  "runtimeTarget": {
+    "name": ".NETCoreApp,Version=v8.0",
+    "signature": ""
+  },
+  "compilationOptions": {},
+  "targets": {
+    ".NETCoreApp,Version=v8.0": {
+      "wpf_data_csv/1.0.0": {
+        "dependencies": {
+          "CsvHelper": "32.0.1"
+        },
+        "runtime": {
+          "wpf_data_csv.dll": {}
+        }
+      },
+      "CsvHelper/32.0.1": {
+        "runtime": {
+          "lib/net8.0/CsvHelper.dll": {
+            "assemblyVersion": "32.0.0.0",
+            "fileVersion": "32.0.1.20"
+          }
+        }
+      }
+    }
+  },
+  "libraries": {
+    "wpf_data_csv/1.0.0": {
+      "type": "project",
+      "serviceable": false,
+      "sha512": ""
+    },
+    "CsvHelper/32.0.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-1sPpPUlSGCU2BRZmU+NZ2Le/AO2BBQTRZPZvNmfIgrDiVgLC6oD6b9QDFFf5AHhNsU+cAAbGoAcnnWq5a7VPlw==",
+      "path": "csvhelper/32.0.1",
+      "hashPath": "csvhelper.32.0.1.nupkg.sha512"
+    }
+  }
+}

二进制
bin/Debug/net8.0-windows/wpf_data_csv.dll


二进制
bin/Debug/net8.0-windows/wpf_data_csv.exe


二进制
bin/Debug/net8.0-windows/wpf_data_csv.pdb


+ 18 - 0
bin/Debug/net8.0-windows/wpf_data_csv.runtimeconfig.json

@@ -0,0 +1,18 @@
+{
+  "runtimeOptions": {
+    "tfm": "net8.0",
+    "frameworks": [
+      {
+        "name": "Microsoft.NETCore.App",
+        "version": "8.0.0"
+      },
+      {
+        "name": "Microsoft.WindowsDesktop.App",
+        "version": "8.0.0"
+      }
+    ],
+    "configProperties": {
+      "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true
+    }
+  }
+}

二进制
img/defaultPicture.jpg


二进制
img/result.png


+ 4 - 0
obj/Debug/net8.0-windows/.NETCoreApp,Version=v8.0.AssemblyAttributes.cs

@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v8.0", FrameworkDisplayName = ".NET 8.0")]

+ 71 - 0
obj/Debug/net8.0-windows/App.g.cs

@@ -0,0 +1,71 @@
+#pragma checksum "..\..\..\App.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "354266AB6066EFF5FF97A7B6717697C559AAF41B"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан программой.
+//     Исполняемая версия:4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+//     повторной генерации кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+using wpf_template;
+
+
+namespace wpf_template {
+    
+    
+    /// <summary>
+    /// App
+    /// </summary>
+    public partial class App : System.Windows.Application {
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "8.0.4.0")]
+        public void InitializeComponent() {
+            
+            #line 5 "..\..\..\App.xaml"
+            this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
+            
+            #line default
+            #line hidden
+        }
+        
+        /// <summary>
+        /// Application Entry Point.
+        /// </summary>
+        [System.STAThreadAttribute()]
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "8.0.4.0")]
+        public static void Main() {
+            wpf_template.App app = new wpf_template.App();
+            app.InitializeComponent();
+            app.Run();
+        }
+    }
+}
+

+ 71 - 0
obj/Debug/net8.0-windows/App.g.i.cs

@@ -0,0 +1,71 @@
+#pragma checksum "..\..\..\App.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "354266AB6066EFF5FF97A7B6717697C559AAF41B"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан программой.
+//     Исполняемая версия:4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+//     повторной генерации кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+using wpf_template;
+
+
+namespace wpf_template {
+    
+    
+    /// <summary>
+    /// App
+    /// </summary>
+    public partial class App : System.Windows.Application {
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "8.0.4.0")]
+        public void InitializeComponent() {
+            
+            #line 5 "..\..\..\App.xaml"
+            this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
+            
+            #line default
+            #line hidden
+        }
+        
+        /// <summary>
+        /// Application Entry Point.
+        /// </summary>
+        [System.STAThreadAttribute()]
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "8.0.4.0")]
+        public static void Main() {
+            wpf_template.App app = new wpf_template.App();
+            app.InitializeComponent();
+            app.Run();
+        }
+    }
+}
+

二进制
obj/Debug/net8.0-windows/MainWindow.baml


+ 180 - 0
obj/Debug/net8.0-windows/MainWindow.g.cs

@@ -0,0 +1,180 @@
+#pragma checksum "..\..\..\MainWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "068F42225CBC6DFBBB452B2C5EA8880F892FDFEB"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан программой.
+//     Исполняемая версия:4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+//     повторной генерации кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+using wpf_template;
+
+
+namespace wpf_template {
+    
+    
+    /// <summary>
+    /// MainWindow
+    /// </summary>
+    public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
+        
+        
+        #line 102 "..\..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button ExitButton;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 120 "..\..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox CategoryFilterComboBox;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 138 "..\..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox PriceFilterComboBox;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 155 "..\..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox CompanyFilterComboBox;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 175 "..\..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.TextBox SearchFilterTextBox;
+        
+        #line default
+        #line hidden
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "8.0.4.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            System.Uri resourceLocater = new System.Uri("/wpf_data_csv;component/mainwindow.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\..\MainWindow.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "8.0.4.0")]
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+            switch (connectionId)
+            {
+            case 1:
+            this.ExitButton = ((System.Windows.Controls.Button)(target));
+            
+            #line 104 "..\..\..\MainWindow.xaml"
+            this.ExitButton.Click += new System.Windows.RoutedEventHandler(this.ExitButton_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 2:
+            this.CategoryFilterComboBox = ((System.Windows.Controls.ComboBox)(target));
+            
+            #line 121 "..\..\..\MainWindow.xaml"
+            this.CategoryFilterComboBox.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.CategoryFilterComboBox_SelectionChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 3:
+            this.PriceFilterComboBox = ((System.Windows.Controls.ComboBox)(target));
+            
+            #line 139 "..\..\..\MainWindow.xaml"
+            this.PriceFilterComboBox.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.PriceFilterComboBox_SelectionChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 4:
+            this.CompanyFilterComboBox = ((System.Windows.Controls.ComboBox)(target));
+            
+            #line 156 "..\..\..\MainWindow.xaml"
+            this.CompanyFilterComboBox.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.CompanyFilterComboBox_SelectionChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 5:
+            this.SearchFilterTextBox = ((System.Windows.Controls.TextBox)(target));
+            
+            #line 176 "..\..\..\MainWindow.xaml"
+            this.SearchFilterTextBox.KeyUp += new System.Windows.Input.KeyEventHandler(this.SearchFilterTextBox_KeyUp);
+            
+            #line default
+            #line hidden
+            return;
+            case 6:
+            
+            #line 186 "..\..\..\MainWindow.xaml"
+            ((System.Windows.Controls.RadioButton)(target)).Checked += new System.Windows.RoutedEventHandler(this.RadioButton_Checked);
+            
+            #line default
+            #line hidden
+            return;
+            case 7:
+            
+            #line 192 "..\..\..\MainWindow.xaml"
+            ((System.Windows.Controls.RadioButton)(target)).Checked += new System.Windows.RoutedEventHandler(this.RadioButton_Checked);
+            
+            #line default
+            #line hidden
+            return;
+            }
+            this._contentLoaded = true;
+        }
+    }
+}
+

+ 180 - 0
obj/Debug/net8.0-windows/MainWindow.g.i.cs

@@ -0,0 +1,180 @@
+#pragma checksum "..\..\..\MainWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "068F42225CBC6DFBBB452B2C5EA8880F892FDFEB"
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан программой.
+//     Исполняемая версия:4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+//     повторной генерации кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Diagnostics;
+using System.Windows;
+using System.Windows.Automation;
+using System.Windows.Controls;
+using System.Windows.Controls.Primitives;
+using System.Windows.Controls.Ribbon;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Ink;
+using System.Windows.Input;
+using System.Windows.Markup;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Media.Effects;
+using System.Windows.Media.Imaging;
+using System.Windows.Media.Media3D;
+using System.Windows.Media.TextFormatting;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using System.Windows.Shell;
+using wpf_template;
+
+
+namespace wpf_template {
+    
+    
+    /// <summary>
+    /// MainWindow
+    /// </summary>
+    public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
+        
+        
+        #line 102 "..\..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.Button ExitButton;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 120 "..\..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox CategoryFilterComboBox;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 138 "..\..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox PriceFilterComboBox;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 155 "..\..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.ComboBox CompanyFilterComboBox;
+        
+        #line default
+        #line hidden
+        
+        
+        #line 175 "..\..\..\MainWindow.xaml"
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+        internal System.Windows.Controls.TextBox SearchFilterTextBox;
+        
+        #line default
+        #line hidden
+        
+        private bool _contentLoaded;
+        
+        /// <summary>
+        /// InitializeComponent
+        /// </summary>
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "8.0.4.0")]
+        public void InitializeComponent() {
+            if (_contentLoaded) {
+                return;
+            }
+            _contentLoaded = true;
+            System.Uri resourceLocater = new System.Uri("/wpf_app;V1.0.0.0;component/mainwindow.xaml", System.UriKind.Relative);
+            
+            #line 1 "..\..\..\MainWindow.xaml"
+            System.Windows.Application.LoadComponent(this, resourceLocater);
+            
+            #line default
+            #line hidden
+        }
+        
+        [System.Diagnostics.DebuggerNonUserCodeAttribute()]
+        [System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "8.0.4.0")]
+        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
+        [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
+        void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
+            switch (connectionId)
+            {
+            case 1:
+            this.ExitButton = ((System.Windows.Controls.Button)(target));
+            
+            #line 104 "..\..\..\MainWindow.xaml"
+            this.ExitButton.Click += new System.Windows.RoutedEventHandler(this.ExitButton_Click);
+            
+            #line default
+            #line hidden
+            return;
+            case 2:
+            this.CategoryFilterComboBox = ((System.Windows.Controls.ComboBox)(target));
+            
+            #line 121 "..\..\..\MainWindow.xaml"
+            this.CategoryFilterComboBox.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.CategoryFilterComboBox_SelectionChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 3:
+            this.PriceFilterComboBox = ((System.Windows.Controls.ComboBox)(target));
+            
+            #line 139 "..\..\..\MainWindow.xaml"
+            this.PriceFilterComboBox.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.PriceFilterComboBox_SelectionChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 4:
+            this.CompanyFilterComboBox = ((System.Windows.Controls.ComboBox)(target));
+            
+            #line 156 "..\..\..\MainWindow.xaml"
+            this.CompanyFilterComboBox.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(this.CompanyFilterComboBox_SelectionChanged);
+            
+            #line default
+            #line hidden
+            return;
+            case 5:
+            this.SearchFilterTextBox = ((System.Windows.Controls.TextBox)(target));
+            
+            #line 176 "..\..\..\MainWindow.xaml"
+            this.SearchFilterTextBox.KeyUp += new System.Windows.Input.KeyEventHandler(this.SearchFilterTextBox_KeyUp);
+            
+            #line default
+            #line hidden
+            return;
+            case 6:
+            
+            #line 186 "..\..\..\MainWindow.xaml"
+            ((System.Windows.Controls.RadioButton)(target)).Checked += new System.Windows.RoutedEventHandler(this.RadioButton_Checked);
+            
+            #line default
+            #line hidden
+            return;
+            case 7:
+            
+            #line 192 "..\..\..\MainWindow.xaml"
+            ((System.Windows.Controls.RadioButton)(target)).Checked += new System.Windows.RoutedEventHandler(this.RadioButton_Checked);
+            
+            #line default
+            #line hidden
+            return;
+            }
+            this._contentLoaded = true;
+        }
+    }
+}
+

二进制
obj/Debug/net8.0-windows/apphost.exe


二进制
obj/Debug/net8.0-windows/ref/wpf_data_csv.dll


二进制
obj/Debug/net8.0-windows/ref/wpf_filtering.dll


二进制
obj/Debug/net8.0-windows/ref/wpf_search_sort.dll


二进制
obj/Debug/net8.0-windows/ref/wpf_template.dll


二进制
obj/Debug/net8.0-windows/refint/wpf_data_csv.dll


二进制
obj/Debug/net8.0-windows/refint/wpf_filtering.dll


二进制
obj/Debug/net8.0-windows/refint/wpf_search_sort.dll


二进制
obj/Debug/net8.0-windows/refint/wpf_template.dll


+ 25 - 0
obj/Debug/net8.0-windows/wpf_app.AssemblyInfo.cs

@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан программой.
+//     Исполняемая версия:4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+//     повторной генерации кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("wpf_app")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
+[assembly: System.Reflection.AssemblyProductAttribute("wpf_app")]
+[assembly: System.Reflection.AssemblyTitleAttribute("wpf_app")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
+[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
+
+// Создано классом WriteCodeFragment MSBuild.
+

+ 1 - 0
obj/Debug/net8.0-windows/wpf_app.AssemblyInfoInputs.cache

@@ -0,0 +1 @@
+312e73076d6d3282b6568a4b72bf6afc027fd766d76246dc8724f49b58651120

+ 13 - 0
obj/Debug/net8.0-windows/wpf_app.GeneratedMSBuildEditorConfig.editorconfig

@@ -0,0 +1,13 @@
+is_global = true
+build_property.TargetFramework = net8.0-windows
+build_property.TargetPlatformMinVersion = 7.0
+build_property.UsingMicrosoftNETSdkWeb = 
+build_property.ProjectTypeGuids = 
+build_property.InvariantGlobalization = 
+build_property.PlatformNeutralAssembly = 
+build_property.EnforceExtendedAnalyzerRules = 
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = wpf_app
+build_property.ProjectDir = C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\
+build_property.EnableComHosting = 
+build_property.EnableGeneratedComInterfaceComImportInterop = 

+ 6 - 0
obj/Debug/net8.0-windows/wpf_app.GlobalUsings.g.cs

@@ -0,0 +1,6 @@
+// <auto-generated/>
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.Linq;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;

二进制
obj/Debug/net8.0-windows/wpf_app.assets.cache


二进制
obj/Debug/net8.0-windows/wpf_app.csproj.AssemblyReference.cache


+ 20 - 0
obj/Debug/net8.0-windows/wpf_app_MarkupCompile.i.cache

@@ -0,0 +1,20 @@
+wpf_app
+1.0.0.0
+
+winexe
+C#
+.cs
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\
+wpf_app
+none
+false
+TRACE;DEBUG;NET;NET8_0;NETCOREAPP
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\App.xaml
+11407045341
+
+91596975283
+199943192456
+MainWindow.xaml;
+
+False
+

+ 25 - 0
obj/Debug/net8.0-windows/wpf_csv_data.AssemblyInfo.cs

@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан программой.
+//     Исполняемая версия:4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+//     повторной генерации кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("wpf_csv_data")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
+[assembly: System.Reflection.AssemblyProductAttribute("wpf_csv_data")]
+[assembly: System.Reflection.AssemblyTitleAttribute("wpf_csv_data")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
+[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
+
+// Создано классом WriteCodeFragment MSBuild.
+

+ 1 - 0
obj/Debug/net8.0-windows/wpf_csv_data.AssemblyInfoInputs.cache

@@ -0,0 +1 @@
+f8cee9c33e11297593a45fc6dc074a722c2625c39b85c7a95b56166701e8b89f

+ 13 - 0
obj/Debug/net8.0-windows/wpf_csv_data.GeneratedMSBuildEditorConfig.editorconfig

@@ -0,0 +1,13 @@
+is_global = true
+build_property.TargetFramework = net8.0-windows
+build_property.TargetPlatformMinVersion = 7.0
+build_property.UsingMicrosoftNETSdkWeb = 
+build_property.ProjectTypeGuids = 
+build_property.InvariantGlobalization = 
+build_property.PlatformNeutralAssembly = 
+build_property.EnforceExtendedAnalyzerRules = 
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = wpf_csv_data
+build_property.ProjectDir = C:\Users\User\Desktop\eb\wpf_data_csv\
+build_property.EnableComHosting = 
+build_property.EnableGeneratedComInterfaceComImportInterop = 

+ 6 - 0
obj/Debug/net8.0-windows/wpf_csv_data.GlobalUsings.g.cs

@@ -0,0 +1,6 @@
+// <auto-generated/>
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.Linq;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;

二进制
obj/Debug/net8.0-windows/wpf_csv_data.assets.cache


二进制
obj/Debug/net8.0-windows/wpf_csv_data.csproj.AssemblyReference.cache


+ 20 - 0
obj/Debug/net8.0-windows/wpf_csv_data_MarkupCompile.i.cache

@@ -0,0 +1,20 @@
+wpf_csv_data
+1.0.0.0
+
+winexe
+C#
+.cs
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\
+wpf_csv_data
+none
+false
+TRACE;DEBUG;NET;NET8_0;NETCOREAPP
+C:\Users\User\Desktop\eb\wpf_data_csv\App.xaml
+11407045341
+
+7-953222621
+199-389163700
+MainWindow.xaml;
+
+False
+

+ 0 - 0
obj/Debug/net8.0-windows/wpf_data.4BEC58CB.Up2Date


+ 25 - 0
obj/Debug/net8.0-windows/wpf_data_csv.AssemblyInfo.cs

@@ -0,0 +1,25 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Этот код создан программой.
+//     Исполняемая версия:4.0.30319.42000
+//
+//     Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
+//     повторной генерации кода.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("wpf_data_csv")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
+[assembly: System.Reflection.AssemblyProductAttribute("wpf_data_csv")]
+[assembly: System.Reflection.AssemblyTitleAttribute("wpf_data_csv")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
+[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
+
+// Создано классом WriteCodeFragment MSBuild.
+

+ 1 - 0
obj/Debug/net8.0-windows/wpf_data_csv.AssemblyInfoInputs.cache

@@ -0,0 +1 @@
+7d70df70ef339ee5c2859e24fc87c7f4fecba7da5d854b8015be2537544edecb

+ 13 - 0
obj/Debug/net8.0-windows/wpf_data_csv.GeneratedMSBuildEditorConfig.editorconfig

@@ -0,0 +1,13 @@
+is_global = true
+build_property.TargetFramework = net8.0-windows
+build_property.TargetPlatformMinVersion = 7.0
+build_property.UsingMicrosoftNETSdkWeb = 
+build_property.ProjectTypeGuids = 
+build_property.InvariantGlobalization = 
+build_property.PlatformNeutralAssembly = 
+build_property.EnforceExtendedAnalyzerRules = 
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = wpf_data_csv
+build_property.ProjectDir = C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\
+build_property.EnableComHosting = 
+build_property.EnableGeneratedComInterfaceComImportInterop = 

+ 6 - 0
obj/Debug/net8.0-windows/wpf_data_csv.GlobalUsings.g.cs

@@ -0,0 +1,6 @@
+// <auto-generated/>
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.Linq;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;

二进制
obj/Debug/net8.0-windows/wpf_data_csv.assets.cache


二进制
obj/Debug/net8.0-windows/wpf_data_csv.csproj.AssemblyReference.cache


+ 0 - 0
obj/Debug/net8.0-windows/wpf_data_csv.csproj.BuildWithSkipAnalyzers


+ 1 - 0
obj/Debug/net8.0-windows/wpf_data_csv.csproj.CoreCompileInputs.cache

@@ -0,0 +1 @@
+a60619d3f7196b21dbf91bd3336e57a5d266589b3208819e8484caf768a66ba4

+ 46 - 0
obj/Debug/net8.0-windows/wpf_data_csv.csproj.FileListAbsolute.txt

@@ -0,0 +1,46 @@
+C:\Users\User\Desktop\eb\wpf_data_csv\bin\Debug\net8.0-windows\wpf_data_csv.exe
+C:\Users\User\Desktop\eb\wpf_data_csv\bin\Debug\net8.0-windows\wpf_data_csv.deps.json
+C:\Users\User\Desktop\eb\wpf_data_csv\bin\Debug\net8.0-windows\wpf_data_csv.runtimeconfig.json
+C:\Users\User\Desktop\eb\wpf_data_csv\bin\Debug\net8.0-windows\wpf_data_csv.dll
+C:\Users\User\Desktop\eb\wpf_data_csv\bin\Debug\net8.0-windows\wpf_data_csv.pdb
+C:\Users\User\Desktop\eb\wpf_data_csv\bin\Debug\net8.0-windows\CsvHelper.dll
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\wpf_data_csv.csproj.AssemblyReference.cache
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\MainWindow.g.cs
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\App.g.cs
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\wpf_data_csv_MarkupCompile.cache
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\wpf_data_csv_MarkupCompile.lref
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\MainWindow.baml
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\wpf_data_csv.g.resources
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\wpf_data_csv.GeneratedMSBuildEditorConfig.editorconfig
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\wpf_data_csv.AssemblyInfoInputs.cache
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\wpf_data_csv.AssemblyInfo.cs
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\wpf_data_csv.csproj.CoreCompileInputs.cache
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\wpf_data_csv.csproj.CopyComplete
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\wpf_data_csv.dll
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\refint\wpf_data_csv.dll
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\wpf_data_csv.pdb
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\wpf_data_csv.genruntimeconfig.cache
+C:\Users\User\Desktop\eb\wpf_data_csv\obj\Debug\net8.0-windows\ref\wpf_data_csv.dll
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\bin\Debug\net8.0-windows\wpf_data_csv.exe
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\bin\Debug\net8.0-windows\wpf_data_csv.deps.json
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\bin\Debug\net8.0-windows\wpf_data_csv.runtimeconfig.json
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\bin\Debug\net8.0-windows\wpf_data_csv.dll
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\bin\Debug\net8.0-windows\wpf_data_csv.pdb
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\bin\Debug\net8.0-windows\CsvHelper.dll
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\wpf_data_csv.csproj.AssemblyReference.cache
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\MainWindow.g.cs
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\App.g.cs
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\wpf_data_csv_MarkupCompile.cache
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\wpf_data_csv_MarkupCompile.lref
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\MainWindow.baml
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\wpf_data_csv.g.resources
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\wpf_data_csv.GeneratedMSBuildEditorConfig.editorconfig
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\wpf_data_csv.AssemblyInfoInputs.cache
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\wpf_data_csv.AssemblyInfo.cs
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\wpf_data_csv.csproj.CoreCompileInputs.cache
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\wpf_data.4BEC58CB.Up2Date
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\wpf_data_csv.dll
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\refint\wpf_data_csv.dll
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\wpf_data_csv.pdb
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\wpf_data_csv.genruntimeconfig.cache
+C:\Users\boooo\OneDrive\Desktop\oap_labs\wpf_app\obj\Debug\net8.0-windows\ref\wpf_data_csv.dll

+ 28 - 0
obj/Debug/net8.0-windows/wpf_data_csv.designer.deps.json

@@ -0,0 +1,28 @@
+{
+  "runtimeTarget": {
+    "name": ".NETCoreApp,Version=v8.0",
+    "signature": ""
+  },
+  "compilationOptions": {},
+  "targets": {
+    ".NETCoreApp,Version=v8.0": {
+      "CsvHelper/32.0.1": {
+        "runtime": {
+          "lib/net8.0/CsvHelper.dll": {
+            "assemblyVersion": "32.0.0.0",
+            "fileVersion": "32.0.1.20"
+          }
+        }
+      }
+    }
+  },
+  "libraries": {
+    "CsvHelper/32.0.1": {
+      "type": "package",
+      "serviceable": true,
+      "sha512": "sha512-1sPpPUlSGCU2BRZmU+NZ2Le/AO2BBQTRZPZvNmfIgrDiVgLC6oD6b9QDFFf5AHhNsU+cAAbGoAcnnWq5a7VPlw==",
+      "path": "csvhelper/32.0.1",
+      "hashPath": "csvhelper.32.0.1.nupkg.sha512"
+    }
+  }
+}

+ 24 - 0
obj/Debug/net8.0-windows/wpf_data_csv.designer.runtimeconfig.json

@@ -0,0 +1,24 @@
+{
+  "runtimeOptions": {
+    "tfm": "net8.0",
+    "frameworks": [
+      {
+        "name": "Microsoft.NETCore.App",
+        "version": "8.0.0"
+      },
+      {
+        "name": "Microsoft.WindowsDesktop.App",
+        "version": "8.0.0"
+      }
+    ],
+    "additionalProbingPaths": [
+      "C:\\Users\\boooo\\.dotnet\\store\\|arch|\\|tfm|",
+      "C:\\Users\\boooo\\.nuget\\packages",
+      "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+    ],
+    "configProperties": {
+      "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true,
+      "Microsoft.NETCore.DotNetHostPolicy.SetAppPaths": true
+    }
+  }
+}

部分文件因为文件数量过多而无法显示