解決 VS2019 中.net core WPF 暫時無法使用 Designer 的臨時方法
- 解決 VS2019 中.net core WPF 暫時無法使用 Designer 的臨時方法
- 安裝 vs 2019 professional/enterprise版本
- 在vs的設置里,勾選.NET core下的"Use preview SDK"
- 使用vs自帶的模板,選擇其中的 .net core WPF 創建Project, 取名為"CoreHiWPF"
- 在剛創建的Solution中使用vs自帶的模板,選擇其中的.net framework WPF添加新的project,取名為"HiWPF"
- 更改 .net core WPF項目 CoreHiWPF 的Assembly Name,使得兩個項目一致
- 確保 .net core WPF項目 CoreHiWPF 是啟動項目
- 試用 XAML Designer
- 按需修改MainWindow.xaml和相應的.cs
以下方法來自於微軟github開源項目 **dotnet/samples**:
dotnet/samples - WPF Hello World sample with linked files,請放心使用。
此篇文章是上篇文章解決vs2019中暫時無法為.net core WinForms使用 Designer 的臨時方法的姊妹篇,但對WPF而言實現起來比WinForms簡單很多。核心思想還是借殼~
目前.net core下的WPF項目中的XAML可視化設計器(Designer)尚不可用,后續的Visual Studio 2019 Update才會支持該部分的功能。不過目前我們想在vs2019中使用 Designer,有一種臨時解決方法。
可以使用Visual Studio來處理鏈接文件(Link files)的功能,並將其XAML Designer用於Classic Framework (即.net Framework的WPF項目)。
具體的解決方法是在同一個 Solution
下創建兩個項目:
- 用於設計WPF應用程序的.NET Framework應用程序.net Framework 項目)
- 用於運行WPF應用程序的.NET Core應用程序(.net core項目)
而兩個應用程序(.net core項目和相應.net Framework 項目)都將引用相同的文件,共享一個Assembly Name
。
安裝 vs 2019 professional/enterprise版本
先安裝 vs 2019 professional/enterprise版本,安裝好.net core 3.0 SDK,此時試着創建一個.net core下的 WPF應用,
設置好相關項目名和存放路徑后,會彈出:
下一步驟,勾選.NET core下的"Use preview SDK"
會解決這個問題。
當然也可使用命令行/Powershell來創建。
- 打開命令行/Powershell
- 使用cd命令,切換到自己平時存vs項目的路徑(比如我切換到
D:\Coding
) - 輸入命令
dotnet new wpf -n "CoreHiWPF"
在vs的設置里,勾選.NET core下的"Use preview SDK"
設置完,重啟vs才能生效。
此時用vs打開剛才的Solution
即可。
使用vs自帶的模板,選擇其中的 .net core WPF 創建Project, 取名為"CoreHiWPF"
在剛創建的Solution中使用vs自帶的模板,選擇其中的.net framework WPF添加新的project,取名為"HiWPF"
此時Solution中的文件目錄為:
更改 .net core WPF項目 CoreHiWPF 的Assembly Name,使得兩個項目一致
右鍵點擊 .net core WPF項目 CoreHiWPF,選擇最后的Properties, 然后將其Assembly Name 改為HiWPF
.
接着右鍵該項目,選"Edit CoreHiWPF.csproj"。
按下圖加入如下相應代碼:
<ItemGroup>
<ApplicationDefinition Include="..\HiWPF\App.xaml" Link="App.xaml">
<Generator>MSBuild:Compile</Generator>
</ApplicationDefinition>
<Compile Include="..\HiWPF\App.xaml.cs" Link="App.xaml.cs" />
</ItemGroup>
<ItemGroup>
<Page Include="..\HiWPF\MainWindow.xaml" Link="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
<Compile Include="..\HiWPF\MainWindow.xaml.cs" Link="MainWindow.xaml.cs" />
</ItemGroup>
根據評論區 @lindexi 的建議改進了一下,確實更合理一些:
此時項目配置文件CoreHiWPF.csproj
的內容為:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<UseWPF>true</UseWPF>
<AssemblyName>HiWPF</AssemblyName>
</PropertyGroup>
<ItemGroup>
<Compile Update="..\HiWPF\**\*.xaml.cs">
<DependentUpon>%(Filename)</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<Page Include="..\HiWPF\**\*.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
</Project>
然后重新編譯運行,再使用 XAML Designer
來修改,一切工作正常。
多謝 @lindexi 的改進建議~
確保 .net core WPF項目 CoreHiWPF 是啟動項目
如果.net core WPF項目 CoreHiWPF 已經高亮,就不用管了。否則,需要選中項目 CoreHiWPF ,右擊后選“Set As Start up project”.
試用 XAML Designer
此時關閉所有打開的文件,雙擊項目HiWPF
中的MainWindow.xaml
,就可以在XAML Designer中看到空白的WPF window了。
按需修改MainWindow.xaml和相應的.cs
接下來,我在MainWindow.xaml
的Grid
中加入了兩行,一行放的是一個含有文本可換行的Label
,另一行是Exit
按鈕。然后在Exit按鈕上加入了Click
事件,在Window
上加入了Loaded
事件。
代碼改完之后,F5
運行,最后的界面如下:
項目代碼已推到github
,歡迎Fork
和star
.
傳送門: .netCore-WPF_Designer , 如果覺得自己配置起來麻煩,也可以 clone 下來自己體驗一把喔~
查看本人最近其他原創作品請移步 (想第一時刻閱讀本人最新文章請在博客園上關注我):
作者簡介:Bravo Yeung,計算機碩士,知乎干貨答主(獲81K 贊同, 38K 感謝, 235K 收藏)。曾在國內 Top3互聯網視頻直播公司工作過,后加入一家外企做軟件開發至今。
如需轉載,請加微信 iMath7 申請開白!
歡迎在留言區留下你的觀點,一起討論提高。如果今天的文章讓你有新的啟發,學習能力的提升上有新的認識,歡迎轉發分享給更多人。
歡迎各位讀者加入 .NET技術交流群,在公眾號后台回復“加群”或者“學習”即可。
文末彩蛋
微信后台回復“asp”,給你:一份全網最強的ASP.NET學習路線圖。
回復“cs”,給你:一整套 C# 和 WPF 學習資源!
回復“core”,給你:2019年dotConf大會上發布的.NET core 3.0學習視頻!
參考資料: