解決VS2019中.net core WPF 暫時無法使用 Designer 的臨時方法


解決 VS2019 中.net core WPF 暫時無法使用 Designer 的臨時方法


以下方法來自於微軟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應用,

1555775855179

設置好相關項目名和存放路徑后,會彈出:

img2-BravoYeung
下一步驟,勾選.NET core下的"Use preview SDK"會解決這個問題。

當然也可使用命令行/Powershell來創建。

  • 打開命令行/Powershell
  • 使用cd命令,切換到自己平時存vs項目的路徑(比如我切換到D:\Coding)
  • 輸入命令dotnet new wpf -n "CoreHiWPF"

creating-WPF-using-CMD

在vs的設置里,勾選.NET core下的"Use preview SDK"

img3

設置完,重啟vs才能生效。
此時用vs打開剛才的Solution即可。

使用vs自帶的模板,選擇其中的 .net core WPF 創建Project, 取名為"CoreHiWPF"

1555775855179

1555775915106

在剛創建的Solution中使用vs自帶的模板,選擇其中的.net framework WPF添加新的project,取名為"HiWPF"

1555775957478

1555775984667

此時Solution中的文件目錄為:

1555776045894

更改 .net core WPF項目 CoreHiWPF 的Assembly Name,使得兩個項目一致

右鍵點擊 .net core WPF項目 CoreHiWPF,選擇最后的Properties, 然后將其Assembly Name 改為HiWPF.

1555773128801

接着右鍵該項目,選"Edit CoreHiWPF.csproj"。

1555773253120

按下圖加入如下相應代碼:

1555773381960

  <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 的建議改進了一下,確實更合理一些:
csproj-opt

此時項目配置文件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了。

1555773860860

按需修改MainWindow.xaml和相應的.cs

接下來,我在MainWindow.xamlGrid中加入了兩行,一行放的是一個含有文本可換行的Label,另一行是Exit按鈕。然后在Exit按鈕上加入了Click事件,在Window上加入了Loaded事件。

modify

代碼改完之后,F5運行,最后的界面如下:
1555774408266

項目代碼已推到github,歡迎Forkstar.
傳送門: .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學習視頻!

參考資料:

dotnet/samples - WPF Hello World sample with linked files


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM