<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        .NET Core 3.0中WPF使用IOC的圖文教程

        來源:懂視網 責編:小采 時間:2020-11-27 14:43:06
        文檔

        .NET Core 3.0中WPF使用IOC的圖文教程

        .NET Core 3.0中WPF使用IOC的圖文教程:前言 我們都知道.NET Core 3.0已經發布了第六個預覽版,我們也知道.NET Core 3.0現在已經支持創建WPF項目了,剛好今天在寫一個代碼生成器的客戶端的時候用到了WPF,所以就把WPF創建以及使用IOC的過程記錄一下,希望能對大家有所幫助。當然文章實例我就以我曾
        推薦度:
        導讀.NET Core 3.0中WPF使用IOC的圖文教程:前言 我們都知道.NET Core 3.0已經發布了第六個預覽版,我們也知道.NET Core 3.0現在已經支持創建WPF項目了,剛好今天在寫一個代碼生成器的客戶端的時候用到了WPF,所以就把WPF創建以及使用IOC的過程記錄一下,希望能對大家有所幫助。當然文章實例我就以我曾

        前言

        我們都知道.NET Core 3.0已經發布了第六個預覽版,我們也知道.NET Core 3.0現在已經支持創建WPF項目了,剛好今天在寫一個代碼生成器的客戶端的時候用到了WPF,所以就把WPF創建以及使用IOC的過程記錄一下,希望能對大家有所幫助。當然文章實例我就以我曾閱讀過的一篇文章的示例代碼來進行演示了。

        步驟

        1、通過命令行創建wpf項目,當然你也可以通過vs2019來進行創建。具體的步驟就不演示了,當然,如果你還不會用vs2019創建項目,那么請你右上角關閉網頁,省的煩心。

        ❯ mkdir WpfIoc
        ❯ cd WpfIoc
        ❯ dotnet.exe --version
        3.0.100-preview6-012264
        
        ❯ dotnet new wpf
        The template "WPF Application" was created successfully.
        
        Processing post-creation actions...
        Running 'dotnet restore' on C:\Users\laure\projects\WpfIoc\WpfIoc.csproj...
         Restore completed in 90.03 ms for C:\Users\laure\projects\WpfIoc\WpfIoc.csproj.
        
        Restore succeeded.
        
        ❯ dotnet build
        Microsoft (R) Build Engine version 16.1.54-preview+gd004974104 for .NET Core
        Copyright (C) Microsoft Corporation. All rights reserved.
        
         Restore completed in 19.92 ms for C:\Users\laure\projects\WpfIoc\WpfIoc.csproj.
        C:\Program Files\dotnet\sdk\3.0.100-preview6-012264\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.RuntimeIdentifierInference.targets(151,5): message NETSDK1057: You are using a preview version of .NET Core. See: https://aka.ms/dotnet-core-preview [C:\Users\laure\projects\WpfIoc\WpfIoc.csproj]
         WpfIoc -> C:\Users\laure\projects\WpfIoc\bin\Debug\netcoreapp3.0\WpfIoc.dll
        
        Build succeeded.
         0 Warning(s)
         0 Error(s)
        
        Time Elapsed 00:00:01.63

        我們想要實現的是引導應用程序并在MainWindow的構造函數中注入一個服務,該服務將被調用以便在應用程序的主窗口上顯示一些文本。

        2、我們首選要安裝下Microsoft Extensions DependencyInjectionnuget包,當然你也可以通過下面的方式進行添加,不過最好還是通過nuget的方式引入最新的預覽版即可。

        <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
        
         <PropertyGroup>
         <OutputType>WinExe</OutputType>
         <TargetFramework>netcoreapp3.0</TargetFramework>
         <UseWPF>true</UseWPF>
         </PropertyGroup>
        
         <ItemGroup>
         <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0-preview6.19304.6" />
         </ItemGroup>
        
         <ItemGroup>
         <ProjectReference Include="..\StoneGenerate.Core\StoneGenerate.Core.csproj" />
         </ItemGroup>
        
        </Project>

        3、創建一個ITextService接口服務,這個接口將由依賴注入容器注入到MainWindow類中進行使用。

        public interface ITextService
        {
         string GetText();
        }

        4、當然你還得創建一個TextService類來實現上面的接口。

        class TextService : ITextService
        {
         private string _text;
        
         public TextService(string text)
         {
         _text = text;
         }
        
         public string GetText()
         {
         return _text;
         }
        }

        5、接下來在我們的入口App.xaml.cs文件中配置我們的IOC容器,并入住我們的服務,相信做過.NET Core項目的你,對下面的代碼應該都非常的熟悉,這里就不過多的解釋了,省的浪費大家的寶貴時間。

        public App()
        {
         var serviceCollection = new ServiceCollection();
         ConfigureServices(serviceCollection);
        
         _serviceProvider = serviceCollection.BuildServiceProvider();
        }
        
        private void ConfigureServices(IServiceCollection services)
        {
         services.AddSingleton<ITextService>(provider => new TextService("Hi WPF .NET Core 3.0"));
         services.AddSingleton<MainWindow>();
        }

        6、接下來我們重寫一下App.xaml.cs的OnStartup方法,解析出MainWindow 并show出來

        protected override void OnStartup(StartupEventArgs e)
         {
         base.OnStartup(e);
         var main = serviceProvider.GetRequiredService<MainWindow>();
         main.Show();
         }

        當然,這也就意味著你得移除App.xmal中的啟動選項,代碼如下:

        <Application x:Class="wpfioc.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:wpfioc"
         Startup="App_OnStartup">
         <Application.Resources>
         </Application.Resources>
        </Application>

        1、接下來我們修改一下MainWindow的xaml代碼以便來顯示我們的文本信息:

        <Window x:Class="WpfIoc.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:WpfIoc"
         mc:Ignorable="d"
         Title="MainWindow" Height="450" Width="800">
         <Grid>
         <Grid.RowDefinitions>
         <RowDefinition Height="9*" />
         <RowDefinition Height="1*" />
         </Grid.RowDefinitions>
         <Label Name="Label" Content="Hello .NET Core!" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="40" />
         </Grid>
        </Window>

        2、當然,MainWindow的cs代碼也要進行下調整,以便能夠接受IOC注入進來的方法。

        public partial class MainWindow : Window
        {
         public MainWindow(ITextService textService)
         {
         InitializeComponent();
        
         Label.Content = textService.GetText();
         }
        }

        結果

        相信上面的繁瑣的步驟你也都看完了,那么接下來就是見證奇跡的時刻了,睜開你的雙眼,奉上精美圖片一張:

        如上圖所示:MainWindow調用了IOC注入進來的TextService服務并正確的顯示了文字。

        謝天謝地,沒出bug,其實我想說,這張圖為了偷懶,我都是盜的,文末上原文鏈接。

        https://laurentkempe.com/2019/04/18/WPF-and-IOC-on-NET-Core-3-0/

        最后

        最近事情比較多,都沒時間好好的分享文章了。當然,每當我閑下來的時候我就會對所學所用進行相應的總結后進行分享的。只是工作忙的原因,頻次越來越低而已。

        好了,

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        .NET Core 3.0中WPF使用IOC的圖文教程

        .NET Core 3.0中WPF使用IOC的圖文教程:前言 我們都知道.NET Core 3.0已經發布了第六個預覽版,我們也知道.NET Core 3.0現在已經支持創建WPF項目了,剛好今天在寫一個代碼生成器的客戶端的時候用到了WPF,所以就把WPF創建以及使用IOC的過程記錄一下,希望能對大家有所幫助。當然文章實例我就以我曾
        推薦度:
        標簽: cor net 使用i
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲黄色网站视频| 国产亚洲精品一品区99热| 久久亚洲AV成人出白浆无码国产| 免费人成又黄又爽的视频在线电影| 成人午夜性A级毛片免费| 亚洲免费观看在线视频| 美女被cao免费看在线看网站| 亚洲性无码av在线| 成人免费视频一区二区三区| 久久精品国产亚洲av天美18| 国产免费无遮挡精品视频| 亚洲av无码专区青青草原| 亚洲精品无码专区2| 国产美女视频免费观看的网站 | 亚洲人成人77777网站| 国产一级片免费看| 中文字幕亚洲第一在线| 免费精品国产日韩热久久| 亚洲色成人四虎在线观看| 国产大片91精品免费看3 | 成人黄网站片免费视频| 西西人体44rt高清亚洲| 曰批视频免费30分钟成人| 亚洲一级高清在线中文字幕| 可以免费观看的一级毛片| 添bbb免费观看高清视频| 亚洲午夜久久久久久久久电影网 | 精品香蕉在线观看免费| 亚洲中文字幕无码爆乳| 亚洲色偷偷狠狠综合网| 久久精品免费观看国产| 亚洲精品美女久久7777777| 自拍偷自拍亚洲精品第1页| 中文字幕在线免费观看| 国产亚洲精品影视在线产品| 久久永久免费人妻精品| 亚洲成a∧人片在线观看无码| 亚洲人成77777在线播放网站| 亚洲视频免费在线看| 无套内谢孕妇毛片免费看看| 亚洲国产高清人在线|