最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

通過App.xaml理解wpf中的Application類

 更新時間:2021年04月02日 09:50:14   作者:杜文龍  
這篇文章主要介紹了通過App.xaml理解wpf中的Application類,幫助大家更好的理解和學(xué)習(xí)使用c# wpf,感興趣的朋友可以了解下

  這個章節(jié)來了解Application類,我考慮了一晚上決定跳過控件類相關(guān)的學(xué)習(xí),因為控件如果只是入門的話每個控件F12跳過去看一下屬性、事件就能大致了解的差不多,而且控件比較多,每個都這樣看一遍,感覺意義不大。同時控件的使用一般又同時包含了,資源、樣式、觸發(fā)器、模板、綁定、列表控件的話,可能還包含列表虛擬化和數(shù)據(jù)虛擬化。所以想了一下。打算先講Application類。

  教程的第一篇我們從hello world開始了解什么是程序。它是如何編譯、生成和運(yùn)行的?,F(xiàn)在這一個篇從App.xaml講解Application類中能包含哪些東西,。這個Application類有哪些應(yīng)用場景。

App.xaml 里包含什么

我們新創(chuàng)建一個WPF的程序,默認(rèn)什么代碼也不改動的情況下雙擊程序代碼中的App.xaml。我們看到如下代碼:

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

  我們就講這些里面一部分常用的,剩下的建議以我們同樣的分析思路,去觀察一下其他的。

1)首先我們看程序啟動后的第一步。通過OnStartUp()方法做啟動參數(shù)檢查。
我們通過OnStartUp()方法的重寫來區(qū)分不同啟動參數(shù),可以讓程序干很多不同的事情,我們打開任務(wù)管理器=》Name列右鍵點擊=》勾選顯示Command line,位置如下:

這樣我們就可以看到當(dāng)前很多其他程序,都是由啟動參數(shù)的,啟動參數(shù)按空格分割,有的程序會有一組參數(shù),所以對我們來說,啟動參數(shù)同樣也是很重要的東西。不管是單例,還是讓程序啟動不同的功能,啟動參數(shù)就是軟件功能解耦的第一步。

我們找到上上個截圖的OnStartup方法,我們在App.xaml.cs里重寫他,代碼如下,并在解決方案下的程序集右鍵=》屬性=》左側(cè)列表選擇調(diào)試=》命令行參數(shù)這里添加對應(yīng)的調(diào)試參數(shù),我們這里設(shè)置用空格分割一句話,這樣我們就可以調(diào)試了,F(xiàn)5啟動。

using System.Text;
using System.Windows;

namespace ApplicationLifeCycle
{
  /// <summary>
  /// App.xaml 的交互邏輯
  /// </summary>
  public partial class App : Application
  { 

    protected override void OnStartup(StartupEventArgs e)
    {
      base.OnStartup(e); 
      StringBuilder sb = new StringBuilder();
      foreach (var item in e.Args)
      {
        sb.Append(item);
      } 
      MessageBox.Show($"args length as {e.Args.Length},args content as {sb.ToString()}");
     
    }
  }
}

 我們看到了參數(shù)是4行,內(nèi)容是-hello duwenong Mastery C#。這樣我們通過重寫OnStartup就可以實現(xiàn)參數(shù)對不同的參數(shù)做不同的處理。 

2)用戶注銷,但是程序正在處理關(guān)鍵任務(wù),通過重寫OnSessionEnding()來提示當(dāng)前工作尚未結(jié)束。
我們通過重寫OnSessionEnding()可以在重要工作沒做完但是,用戶選擇關(guān)機(jī)、重啟或注銷電腦時提示用戶我們有任務(wù)尚未結(jié)束。

private bool _unsavedData = false;
    public bool UnsavedData
    {
      get { return _unsavedData; }
      set
      {
        _unsavedData = value;
      }
    }

    protected override void OnSessionEnding(SessionEndingCancelEventArgs e)
    {
      base.OnSessionEnding(e);
      //假設(shè)某些線程未完成保存,把UnsaveData設(shè)置為True
      UnsavedData = true;
      if (UnsavedData)
      {
        e.Cancel = true;
        MessageBox.Show($"我們的數(shù)據(jù)尚未保存完畢,{e.ReasonSessionEnding} 將丟失數(shù)據(jù)。");
      }
    }

3)默認(rèn)啟動那個Window窗體。我們使用StartupUri設(shè)置可以修改默認(rèn)啟動的Window窗體。

 這樣啟動的就是我們新創(chuàng)建的Window1.

4)通過ShutdownMode修改程序默認(rèn)的關(guān)閉方式。

1.OnExplicitShutdown 這個方法比較特殊,他是除非通過代碼調(diào)用了Application.Shutdown()方法,否則即使所有窗口都關(guān)閉了,程序仍然駐留再后臺。
2.OnLastWindowClose 這個是默認(rèn)的值,只要至少有一個窗口存在,應(yīng)用程序就保持運(yùn)行狀態(tài),但是注意如果關(guān)閉了主窗口,MainWindow扔就指向當(dāng)時的窗體,需要代碼切換MainWindow到其他窗體
3.OnMainWindowClose 這個是只要主窗體還處于打開狀態(tài),應(yīng)用程序就保持運(yùn)行,如果主窗體關(guān)閉進(jìn)程就退出。

5)使用Application.Current訪問當(dāng)前Application的實例

private void GetCurrentWindowListButton_Click(object sender, RoutedEventArgs e)
    {
      Window mainWindow = Application.Current.MainWindow;
      foreach (var item in Application.Current.Windows)
      {
        var title = ((Window)item).Title;
      }

    }

我們使用代碼獲取當(dāng)前打開的所有window的標(biāo)題。

Application的屬性和方法目前就寫這么多,其他的大家可以自己F12看一下并嘗試寫一下代碼,資源和資源的查找雖然也是Application下的。但是我覺得這點要要出來單獨講,所以就不寫在這里啦。

以上就是通過App.xaml理解wpf中的Application類的詳細(xì)內(nèi)容,更多關(guān)于理解wpf中的Application類的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C#入門之checked和unchecked的區(qū)別實例解析

    C#入門之checked和unchecked的區(qū)別實例解析

    這篇文章主要介紹了C#中checked和unchecked的區(qū)別,是學(xué)習(xí)C#必須要牢固掌握的,需要的朋友可以參考下
    2014-08-08
  • C#實現(xiàn)工廠方法模式

    C#實現(xiàn)工廠方法模式

    這篇文章介紹了C#實現(xiàn)工廠模式的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 用C#編寫獲取遠(yuǎn)程IP,MAC的方法

    用C#編寫獲取遠(yuǎn)程IP,MAC的方法

    用C#編寫獲取遠(yuǎn)程IP,MAC的方法...
    2007-04-04
  • C#中的let字句應(yīng)用示例

    C#中的let字句應(yīng)用示例

    這篇文章主要給大家介紹了C#中的let字句,文中通過應(yīng)用實例介紹的很詳細(xì),相信對大家具有一定的參考價值,有需要的朋友們下面來一起看看吧。
    2017-02-02
  • C#使用Protocol Buffer(ProtoBuf)進(jìn)行Unity中的Socket通信

    C#使用Protocol Buffer(ProtoBuf)進(jìn)行Unity中的Socket通信

    這篇文章主要介紹了C#使用Protocol Buffer(ProtoBuf)進(jìn)行Unity的Socket通信的實例,Protocol Buffer是Google開發(fā)的數(shù)據(jù)格式,也是除了XML和JSON之外人氣第三高的^^需要的朋友可以參考下
    2016-04-04
  • 基于WPF實現(xiàn)簡單放大鏡效果

    基于WPF實現(xiàn)簡單放大鏡效果

    這篇文章主要為大家詳細(xì)介紹了WPF如何實現(xiàn)簡單放大鏡效果,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定幫助,感興趣的小伙伴可以了解一下
    2022-12-12
  • C# 面向?qū)ο笕筇匦裕悍庋b、繼承、多態(tài)

    C# 面向?qū)ο笕筇匦裕悍庋b、繼承、多態(tài)

    本文主要介紹了面向?qū)ο蟮娜筇匦裕悍庋b、繼承、多態(tài),提供了簡單的示例供大家參考和理解。
    2016-03-03
  • c#?復(fù)寫Equals方法的實現(xiàn)

    c#?復(fù)寫Equals方法的實現(xiàn)

    本文主要介紹了c#?復(fù)寫Equals方法的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C#實現(xiàn)跑馬燈效果的示例代碼

    C#實現(xiàn)跑馬燈效果的示例代碼

    跑馬燈效果,功能效果大家應(yīng)該都知道,就是當(dāng)我們的文字過長,整個頁面放不下的時候(一般用于公告等),可以讓它自動實現(xiàn)來回滾動。本文將利用C#實現(xiàn)這一效果,感興趣的可以了解一下
    2022-11-11
  • Unity通過代碼修改按鈕點擊效果

    Unity通過代碼修改按鈕點擊效果

    這篇文章主要為大家詳細(xì)介紹了Unity通過代碼修改按鈕點擊效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04

最新評論

青神县| 衡水市| 曲阜市| 囊谦县| 密山市| 穆棱市| 常熟市| 平罗县| 安远县| 和平县| 贵定县| 鹤庆县| 巴青县| 南陵县| 南溪县| 九江县| 剑川县| 大厂| 蛟河市| 和龙市| 淳安县| 衡水市| 商水县| 九龙城区| 灌云县| 治县。| 辛集市| 淄博市| 安丘市| 新龙县| 大城县| 黔南| 怀来县| 科技| 江孜县| 临朐县| 宁河县| 康定县| 绥滨县| 太和县| 尚义县|