日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

WPF笔记(1.1 WPF基础)——Hello,WPF!

發(fā)布時(shí)間:2023/12/1 asp.net 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF笔记(1.1 WPF基础)——Hello,WPF! 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
WPF筆記(1.1 WPF基礎(chǔ))——Hello,WPF! 原文:WPF筆記(1.1 WPF基礎(chǔ))——Hello,WPF!

Example?1-1.?Minimal?C#?WPF?application
//?MyApp.cs
using?System;
using?System.Windows;?//?the?root?WPF?namespace

namespace?MyFirstAvalonApp?{
??
class?MyApp?{
????[STAThread]
????
static?void?Main(??)?{
??????
//?the?WPF?message?box
??????MessageBox.Show("Hello,?Avalon");
????}

??}

}

1。這里,在project中要事先導(dǎo)入3個(gè)framework的dll,分別是WindowsBase,PresentationCore,PresentatioFramework,這樣你才可以使用新的System.Windows——來(lái)自\Framework\v3.0\WindowsBase.dll,而不是\Framework\v2.0.50727\System.Windows.Forms.dll,從而增加了很多新的功能。
2。注意,vs2005下是看不到Main的,所以這么玩就不行;找到App.g.cs這樣的文件,Main代碼藏在這里,對(duì)其進(jìn)行相應(yīng)改動(dòng)。vs2005下自動(dòng)找Main的小技巧:因?yàn)锳pp類(lèi)是分散類(lèi),所以右擊函數(shù)定義,會(huì)找到兩個(gè)地方,一個(gè)就是本頁(yè)App.xaml.cs,另一個(gè)會(huì)定向到App.g.cs文件。

Example?1-3.?A?minimal?msbuild?project?file
<!--?1st.csproj?-->
<Project
??DefaultTargets
="Build"
??xmlns
="http://schemas.microsoft.com/developer/msbuild?
/2003">
??<PropertyGroup>
????
<OutputType>winexe</OutputType>
????
<OutputPath>.\</OutputPath>
????
<Assembly>1st.exe</Assembly>
??
</PropertyGroup>
??
<ItemGroup>
????
<Compile?Include="MyApp.cs"?/>
????
<Reference?Include="System"?/>
????
<Reference?Include="WindowsBase"?/>
????
<Reference?Include="PresentationCore"?/>
????
<Reference?Include="PresentationFramework"?/>
??
</ItemGroup>
??
<Import?Project="$(MsbuildBinPath)\Microsoft.CSharp.targets"?/>
</Project>

1。就是把*.csproj 工程文件用記事本打開(kāi)看到的東西啦。相應(yīng)命令行msbuild??傊?#xff0c;是vs2005所原有的。
2。倒數(shù)第二行有點(diǎn)意思,查了一下別人的blog,

Microsoft.CSharp.targets位于C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目錄下
用記事本打開(kāi),是一個(gè)XML文件,記錄了生成項(xiàng)目的所有步驟。

Example?1-5.?A?less?minimal?WPF?application
//?MyApp.cs
using?System;
using?System.Windows;

namespace?MyFirstAvalonApp?{
??
class?MyApp?:?Application?{
????[STAThread]
????
static?void?Main(string[]?args)?{
??????MyApp?app?
=?new?MyApp(??);
??????app.StartingUp?
+=?app.AppStartingUp;
??????app.Run(args);
????}


????
void?AppStartingUp(object?sender,?StartingUpCancelEventArgs?
?e)?
{
??????
//?By?default,?when?all?top?level?windows
??????
//?are?closed,?the?app?shuts?down
??????Window?window?=?new?Window(??);
??????window.Text?
=?"Hello,?Avalon";
??????window.Show(??);
????}

??}

}

1。這個(gè)例子有語(yǔ)法問(wèn)題,可能是寫(xiě)書(shū)的時(shí)候還是WinFX,所以StartingUpCacalEventArgs事件應(yīng)該改為StartUpEventArgs,?也可以不在Main里面做,
在App.xaml的Starting屬性指定就可以了。Window還沒(méi)有Text屬性,相應(yīng)的要改為window.Title

2。MyApp:Application
看到這里,不得不說(shuō)了。其實(shí)WPF分為兩種,一種是Window Application(C/S),使用Window標(biāo)簽;另一種是Browser Application(B/S),使用Page標(biāo)簽。但是WPF的Project,都用App.xaml文件作為入口,相應(yīng)標(biāo)簽是Application,app.xaml中寫(xiě)Main函數(shù),但是一般不可見(jiàn),隱藏在app.g.cs文件中(分散類(lèi)機(jī)制)。App.xaml的Application標(biāo)簽中,用StartupUri屬性指定第一個(gè)打開(kāi)的Form/Page是哪一個(gè)。具體的xaml語(yǔ)法見(jiàn)后。

Example?1-6.?Window?class?declaring?its?own?controls
//?Window1.cs
using?System;
using?System.Windows;
using?System.Windows.Controls;?//?Button?et?al

namespace?MyFirstAvalonApp?{
??
class?Window1?:?Window?{
????
public?Window1(??)?{
??????
this.Text?=?"Hello,?Avalon";

??????
//?Do?something?interesting?(sorta)
??????Button?button?=?new?Button(??);
??????button.Content?
=?"Click?me,?baby,?one?more?time!";
??????button.Width?
=?200;
??????button.Height?
=?25;
??????button.Click?
+=?button_Click;

??????
this.AddChild(button);
????}


????
void?button_Click(object?sender,?RoutedEventArgs?e)?{
??????MessageBox.Show(
????????
"You've?done?that?before,?haven't?you",
????????
"Nice!");
????}

??}

1。寫(xiě)到這里我要罵人了,初學(xué)者都會(huì)上當(dāng)在這里。我是調(diào)試了半天沒(méi)有成功。原因很簡(jiǎn)單,沒(méi)有搞清楚vs2005自動(dòng)生成的一些代碼。一個(gè)是Main函數(shù),不要用他的,自己寫(xiě)app.Run(new Window1);還有就是window的InitializeComponent方法所在那個(gè)部分類(lèi),全部mark掉,不用那個(gè)初始化方法,這樣就不和加載新button沖突了。唉,其實(shí)vs也是好意,我們真正開(kāi)發(fā)還是要用vs的,但是現(xiàn)階段學(xué)習(xí)用例,確實(shí)vs會(huì)造成困惑。
2。其實(shí)還有一種等價(jià)寫(xiě)法,就是充分利用xaml中的聲明,如<Button x:Name="button1",這樣相應(yīng)的后臺(tái)可以直接使用這個(gè)button1對(duì)象——xaml語(yǔ)言等價(jià)于對(duì)象建模。而這種方法的實(shí)質(zhì)就是vs2005自動(dòng)生成的InitializeComponent方法,它是加載這個(gè)xaml文件,將其序列化為對(duì)象,加載到Application級(jí)別中,接下來(lái)就可以使用了。
3。例1.7——1.13講的就是我上面所述的??傊@本書(shū)的寫(xiě)作順序不對(duì),應(yīng)該指出來(lái)前面先不要用vs2005,而后講vs的玩法及原理,最后再展示vs上開(kāi)發(fā)的例子——這樣就對(duì)了。

posted on 2015-11-13 17:16 NET未來(lái)之路 閱讀(...) 評(píng)論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/lonelyxmas/p/4962697.html

總結(jié)

以上是生活随笔為你收集整理的WPF笔记(1.1 WPF基础)——Hello,WPF!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。