可視化程式設計基礎(一)——XAML控制項

来源:https://www.cnblogs.com/cui-jia-hua-blog/archive/2018/03/18/8598204.html
-Advertisement-
Play Games

作為一個剛剛接觸C#和XAML的新手,首先就是要搞清楚這二者之間的關係。XAML的中文名稱為可擴展應用程式標記語言,而C#則是運行於.NET Framework之上的高級程式設計語言,可以理解為使用XAML製作UWP的用戶使用界面,而使用C#來完成內部的邏輯實現。 簡單類比QT應該就是.ui文件和. ...


作為一個剛剛接觸C#和XAML的新手,首先就是要搞清楚這二者之間的關係。XAML的中文名稱為可擴展應用程式標記語言,而C#則是運行於.NET Framework之上的高級程式設計語言,可以理解為使用XAML製作UWP的用戶使用界面,而使用C#來完成內部的邏輯實現。

簡單類比QT應該就是.ui文件和.cpp文件區別。可視化程式設計我只接觸過QT,對於網站設計並不瞭解,所以對於XAML這種類似於HTML的標記語言不熟,還需要加緊學習。

在看完大部分XAML控制項後,和我之前接觸的QT進行對比,我發現大部分的特性都很類似,比如說在設計時界面與內部實現分開,所見即所得等。但對於XAML我發現了很多有趣的地方。


 

首先就是最令我感到奇怪的一點,就是我沒有找到UWP在電腦端對滑鼠圖標的改變,例如在QT中,我們可以通過設置這樣一個屬性

來使得滑鼠在移向該按鈕後變為手指標識,但在UWP中我沒有看到按鈕有這樣的屬性,在我使用的網易雲音樂中滑鼠也沒有變化,一直是處於箭頭狀態,所以很多時候都不清楚一些按鈕能否點擊。我猜測是因為其跨平臺的特性,在移動端以及穿戴式設備上不需要這方面的功能。但我覺得對於已經養成習慣的電腦用戶來說,是有些不習慣的。


其次就是MediaElement & MediaPlayerElement這兩個控制項,看介紹是說一個舊一個新,但MediaPlayerElement有什麼新的特性我並沒有找到,也並不清楚是從頭實現了一個新類還是只是將原來的MediaElement改了名字,不過相信微軟這麼做一定是有一些道理的。

 

但這個控制項本身功能是非常強大的,播放器的基本操作都包含了進去,在QT中如果實現一個差不多功能的控制項需要的代碼量會很大,而在UWP中僅僅需要一行代碼就可以新建一個播放器。這一點是其他可視化編程平臺做不到的,但這也引起了一些問題,比如說在QT中我可以定製出一個和其他所有人都不同的個性播放器,而UWP中不知道是否有方法將MediaPlayerElement進行修改,在接下來的學習中我會仔細考慮這個事情。

 


 

對於ParallaxView,我第一感覺就是炫酷,相當於直接將圖片設置為按鈕的背景,同時在用戶下滑時還會自動顯示圖片剩餘部分,整個界面瞬間變得高大上了起來,如果有好看的界面相信很多人會摒棄原來單調的背景。

 


然後是pivot這個東西,這個東西很類似QT中存放控制項的QStackedLayout,可以存放很多其他控制項,根據用戶的需求顯示不同的界面。原來我認為這個是必須顯示title的

 

然而在親自實現後才發現如果不設置title和header時,預設是和QStackedLayout一樣沒有任何顯示的。


 

最後是XAML的一些全新的控制項:

RatingControl:

這個控制項感覺就是官方欽定了一種給軟體或產品打分的方式,為程式員節省了自己編寫打分程式的時間,並且比使用數字框更加直觀。相信在程式員自己定義打分的圖形後,比如說把新型換成笑臉等等會使打分功能更加個性化。

RepeatButton:

看起來和普通按鈕類似,但點擊滑鼠後只要不鬆開就一直會觸發某種事件,和QT中重寫了MouseRelease的Button很像。不過有一點不同的是當滑鼠按住並拖動到按鈕外時,計數就會停止,這意味著這個按鈕不僅監控滑鼠按下鬆開事件,並且還監控了滑鼠的位置。

InkCanvas:

一個功能十分簡單,代碼也十分簡單的內置畫圖工具,對於一些需要手寫文字或簡單畫圖的場合十分適用。但因為功能太簡單,暫時也不清楚拓展性如何,所以對於windows自帶的畫圖工具來說還是有些差距。


以上是我比較感興趣的控制項,感覺UWP整體上非常適合在PC端編寫windows應用,並且聽說UWP的程式可以直接在其他平臺上如windows phone等直接運行,不必過多考慮相容性的問題,相信這也是C#語言崛起的一大原因吧。

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • manifest文件是用來描述jar包的,它描述了該jar包的代碼是誰的,什麼版本,使用什麼版本的類庫等等。。。。具體如下: 1、基礎格式 manifest 文件的格式是很簡單的,每一行都是 名-值 對應的:屬性名開頭,接著是 ":" ,然後是屬性值,每行最多72個字元,如果需要增加,你可以在下一行 ...
  • 無意中看到了這篇文章,占時還沒用到這個知識,主要解決網頁訪問量增加到一定數量級帶來的網站停滯問題。前些時候也學了JVM相關知識,先碼一下,以後也許有用 以下文章轉至原文http://blog.csdn.net/u014236541/article/details/50008047 JVM參數調優是個 ...
  • 基於java版本的掃碼支付開發 最近做了一個電商,其中有涉及關於支付的問題,花了點小小的時間。因此寫了一個小demo,不能說完美,但是能實現下訂單掃碼支付功能。這裡我選擇的技術是J2EE中的servlet和jsp,支付環境採用的是支付寶中的沙箱環境(基於本人沒有企業級或者個人營業執照,無法申請支付接 ...
  • 前言 在開始工作至今,學習各種各樣的技術之中發現自己的很多Java的基礎知識都忘了⊙﹏⊙b汗。。。 而且越是學習越是發現Java基礎的重要性,所以準備單獨抽一下時間進行Java基礎的重新學習。在重新學習的時候,對這些又有了不同的感悟,於是準備將這些都記載下來,並整理成博客,希望能夠幫助那些需要的人。 ...
  • 1.編程語言的分類 機器語言:二進位指令編程,直接操作硬體,運行效率高,開發效率低 彙編語言:用英文標簽代替二進位指令,也是直接操作硬體,運行效率高,開發效率低 高級語言:用人類的字元編寫程式,電腦無法理解,必須翻譯為電腦能夠理解的語言,才能執行,分為兩種 編譯型,解釋型 編譯型:如c語言,編譯 ...
  • fail fast 機制是Java集合(Collection)中的一種錯誤機制。當多個線程對同一個集合的內容進行操作時,就可能會產生fail fast(快速失敗)事件。例如:當某一個線程A通過iterator去遍歷某集合的過程中,若該集合的內容被其他線程所改變了;那麼線程A訪問集合時,就會拋出Con ...
  • 當在angularjs去顯示一個時間時,如原原本本去顯示這個值,它將顯示一個怪怪的字元串,其實它就是被系列化json之後的字元串。如:一個空值顯示為日期時間:如果非空值顯示為日期時間的情形: 為了能正常顯示,我得需要先將這json的字元串,進行返系列化,創建angularjs的過濾器filter: ...
  • GitHub Flavored Markdown 今天研究了一天Markdown移動端和pc端統一實現方式,由於以前有搞過移動端富文本編輯器,搞Markdown簡單多了; 其中GFM的表情語法不錯,比如笑臉:smile:,準備採用一下。 又想到了手機輸入法輸入表情瀏覽器頁面接收到的是一個字元,如果能 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...