c# - 由于我是盲人且无法访问 Visual Studio,我可以仅使用纯代码创建 C# WPF 应用程序吗?
问题描述
我完全失明,我使用 NVDA 屏幕阅读器来操作我的系统,并且我正在尝试创建一个 Windows 桌面应用程序。Visual Studio 对屏幕阅读器不友好,至少不是表单设计器部分。VS Code 几乎可以访问,尽管 powershell 的 protools 设计器不是。
每当我看到一个关于用纯代码在 WPF 中编写 GUI 的问题时,我都会发现很多“以上帝的名义,你为什么要这样做?使用 VS!” 答案。好吧,这就是原因,VS 表单设计器对于盲人程序员来说是遥不可及的,所以必须采用最不实用的方法。
那么,可以做到吗?你会建议任何资源或方法吗?
解决方案
我将尝试从另一个示例进行构建,以获得可编译的代码。要使 WPF 正常工作,您需要一个使用 WPF 支持构建的项目。
最简单的方法是创建一个我们.csproj
自己并使用之前发布的纯代码解决方案。
所以,从一个最小的App.csproj
文件开始:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net5.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
</PropertyGroup>
</Project>
然后像以前一样输入应用程序和窗口代码App.cs
。StackPanel
我已经添加了几个控件,因为如果您想稍后开始添加更多内容,您仍然需要一个容器(我使用过)。
using System;
using System.Windows;
using System.Windows.Controls;
public class App : Application {
protected override void OnStartup(StartupEventArgs e) {
base.OnStartup(e);
new MainWindow().Show();
}
[STAThread]
public static void Main() => new App().Run();
}
public class MainWindow : Window {
protected override void OnInitialized(EventArgs e) {
base.OnInitialized(e);
var panel = new StackPanel();
this.Content = panel;
var label = new Label { Content = "Click me:" };
panel.Children.Add(label);
var closeButton = new Button { Content = "Close", Height = 100 };
closeButton.Click += (sender, args) => this.Close();
panel.Children.Add(closeButton);
(this.Width, this.Height) = (200, 200);
}
}
然后,您使用dotnet build
. 您可以使用dotnet run
或直接调用 exe 运行它。
或者,如果您想使用单独的 .xaml 和 .xaml.cs 代码探索 WPF 项目,您可以使用dotnet new wpf -o MyProjectName
. 这将生成一个项目、一个基于 xaml 的应用程序和一个基于 xaml 的表单。
推荐阅读
- kubernetes - argocd cli json 输出
- java - 通过键将换行符分隔的 JSON 中的所有值字符串化
- nginx - 韵律的 Nginx 反向代理返回 404
- laravel - Laravel DB::transaction - 保存到事务之外的表中?
- sql-server - 通过 VPN 连接将 dockerized 应用程序从远程计算机连接到数据库
- python - 使用 pack(pady) 的 Tkinter 小部件没有移动
- javascript - Javascript比较对象中至少一对相同的对
- git - 比较 Bitbucket 中的两个分支 - 不区分大小写
- rpm - 如何在 rpmbuild 中阻止架构(x86_64)的自动附加
- javascript - 向数组添加新对象会影响数组中的其他对象 - HTML Canvas Animation