WPFBlazorChat\RazorViews\Counter.razor
| <h1>Counter</h1> |
| |
| <p>好开心,你点我了,现在是:<span style="color: red;">@currentCount</span></p> |
| |
| <button class="btn btn-primary" @onclick="IncrementCount">快快点我</button> |
| |
| @code { |
| |
| |
| private int currentCount = 0; |
| |
| private void IncrementCount() |
| { |
| currentCount++; |
| } |
| |
| } |
WPFBlazorChat\App.xaml.cs
| using System; |
| using System.Collections.Generic; |
| using System.Configuration; |
| using System.Data; |
| using System.Linq; |
| using System.Threading.Tasks; |
| using System.Windows; |
| |
| namespace WPFBlazorChat |
| { |
| |
| |
| |
| public partial class App : Application |
| { |
| |
| } |
| |
| } |
| |
| |
| |
WPFBlazorChat\MainWindow.xaml.cs
| using Microsoft.Extensions.DependencyInjection; |
| using System.Windows; |
| |
| namespace WPFBlazorChat; |
| |
| public partial class MainWindow : Window |
| { |
| public MainWindow() |
| { |
| InitializeComponent(); |
| var serviceCollection = new ServiceCollection(); |
| serviceCollection.AddWpfBlazorWebView(); |
| Resources.Add("services", serviceCollection.BuildServiceProvider()); |
| } |
| } |
| |
| |
WPFBlazorChat\MainWindow.xaml
| <Window x:Class="WPFBlazorChat.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:blazor="clr-namespace:Microsoft.AspNetCore.Components.WebView.Wpf;assembly=Microsoft.AspNetCore.Components.WebView.Wpf" |
| xmlns:local="clr-namespace:WPFBlazorChat" |
| xmlns:razorViews="clr-namespace:WPFBlazorChat.RazorViews" |
| mc:Ignorable="d" |
| Title="MainWindow" Height="450" Width="800"> |
| <Grid> |
| <blazor:BlazorWebView HostPage="wwwroot\index.html" Services="{DynamicResource services}"> |
| <blazor:BlazorWebView.RootComponents> |
| <blazor:RootComponent Selector="#app" ComponentType="{x:Type razorViews:Counter}" /> |
| </blazor:BlazorWebView.RootComponents> |
| </blazor:BlazorWebView> |
| </Grid> |
| </Window> |
| |
| |
WPFBlazorChat\wwwroot\css\app.css
| html, body { |
| font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; |
| } |
| |
| h1:focus { |
| outline: none; |
| } |
| |
| a, .btn-link { |
| color: #0071c1; |
| } |
| |
| .btn-primary { |
| color: #fff; |
| background-color: #1b6ec2; |
| border-color: #1861ac; |
| } |
| |
| .valid.modified:not([type=checkbox]) { |
| outline: 1px solid #26b050; |
| } |
| |
| .invalid { |
| outline: 1px solid red; |
| } |
| |
| .validation-message { |
| color: red; |
| } |
| |
| #blazor-error-ui { |
| background: lightyellow; |
| bottom: 0; |
| box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2); |
| display: none; |
| left: 0; |
| padding: 0.6rem 1.25rem 0.7rem 1.25rem; |
| position: fixed; |
| width: 100%; |
| z-index: 1000; |
| } |
| |
| #blazor-error-ui .dismiss { |
| cursor: pointer; |
| position: absolute; |
| right: 0.75rem; |
| top: 0.5rem; |
| } |
WPFBlazorChat\wwwroot\index.html
| <!DOCTYPE html> |
| <html lang="en"> |
| |
| <head> |
| <meta charset="utf-8" /> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <title>WPFBlazorChat</title> |
| <base href="/" /> |
| <link href="css/app.css" rel="stylesheet" /> |
| <link href="WpfBlazor.styles.css" rel="stylesheet" /> |
| </head> |
| |
| <body> |
| <div id="app">Loading...</div> |
| |
| <div id="blazor-error-ui"> |
| An unhandled error has occurred. |
| <a href="" class="reload">Reload</a> |
| <a class="dismiss">🗙</a> |
| </div> |
| <script src="_framework/blazor.webview.js"></script> |
| </body> |
| |
| </html> |
WPFBlazorChat\_Imports.razor
| @using Microsoft.AspNetCore.Components.Web |
WPFBlazorChat\WPFBlazorChat.sln
| |
| Microsoft Visual Studio Solution File, Format Version 12.00 |
| # Visual Studio Version 17 |
| VisualStudioVersion = 17.4.33006.217 |
| MinimumVisualStudioVersion = 10.0.40219.1 |
| Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WPFBlazorChat", "WPFBlazorChat.csproj", "{2FAA0381-1B71-4B1A-BA17-54B8A4E94397}" |
| EndProject |
| Global |
| GlobalSection(SolutionConfigurationPlatforms) = preSolution |
| Debug|Any CPU = Debug|Any CPU |
| Release|Any CPU = Release|Any CPU |
| EndGlobalSection |
| GlobalSection(ProjectConfigurationPlatforms) = postSolution |
| {2FAA0381-1B71-4B1A-BA17-54B8A4E94397}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
| {2FAA0381-1B71-4B1A-BA17-54B8A4E94397}.Debug|Any CPU.Build.0 = Debug|Any CPU |
| {2FAA0381-1B71-4B1A-BA17-54B8A4E94397}.Release|Any CPU.ActiveCfg = Release|Any CPU |
| {2FAA0381-1B71-4B1A-BA17-54B8A4E94397}.Release|Any CPU.Build.0 = Release|Any CPU |
| EndGlobalSection |
| GlobalSection(SolutionProperties) = preSolution |
| HideSolutionNode = FALSE |
| EndGlobalSection |
| GlobalSection(ExtensibilityGlobals) = postSolution |
| SolutionGuid = {893F0C4E-C6A5-49D0-A5A6-B16AEA380AA2} |
| EndGlobalSection |
| EndGlobal |
| |
WPFBlazorChat\WPFBlazorChat.csproj
| <Project Sdk="Microsoft.NET.Sdk.Razor"> |
| |
| <PropertyGroup> |
| <RootNameSpace>WPFBlazorChat</RootNameSpace> |
| <OutputType>WinExe</OutputType> |
| <TargetFramework>net7.0-windows</TargetFramework> |
| <Nullable>enable</Nullable> |
| <UseWPF>true</UseWPF> |
| </PropertyGroup> |
| |
| <ItemGroup> |
| <PackageReference Include="Microsoft.AspNetCore.Components.WebView.Wpf" Version="7.0.0-rc.2.6866" /> |
| </ItemGroup> |
| |
| </Project> |
WPFBlazorChat\AssemblyInfo.cs
| 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) |
| )] |
| |
WPFBlazorChat\App.xaml
| <Application x:Class="WPFBlazorChat.App" |
| xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" |
| xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
| xmlns:local="clr-namespace:WPFBlazorChat" |
| StartupUri="MainWindow.xaml"> |
| <Application.Resources> |
| |
| </Application.Resources> |
| </Application> |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!