學習C#.net有兩三個星期了, 怎奈書本略厚, 工作略繁雜, 于是各種跳章, 好不容易跳到了WPF的章節.
看了<<C#與.NET4進階程式設計>>第27章, 就突然産生了一個想法.
總覺得WPF是在跟網頁制作較勁, 網頁的HTML标簽一行一行加載下來, 如果有一行button加載完了, 下面可以寫一個js标簽, 顯示地執行一段函數.
于是我想XAML是不是也能這樣呢?
比如, 在一個Button加載完之後執行一條語句, 跳一個MessageBox什麼的? 可貌似, 在XAML中不能顯式調用函數...
正所謂初生牛犢不怕虎, 于是我這樣做:
1, 首先建立一個能在XAML中寫的标簽, 為了造成一層輕薄的假象, 這個标簽就叫做Script好了~ Script标簽下的隻能調用函數...怎麼調用呢? 于是我想到用屬性調用. 這個屬性擁有函數般的名字, 而它的value其實隻是函數的參數...
真正殘念
public class Script:UIElement
{
public string ShowMessage
{
set
{
MessageBox.Show(value.ToString());
}
}
}
2, 在XAML中添加命名空間, 在這裡我還算是老實地帶上了local的字首...
<Window x:Class="WpfTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfTest"
Title="MainWindow" Height="350" Width="525">
3, 在window的内容布局控件中随便加點Button什麼的, 然後把Script放在後面, 比如這樣
<StackPanel>
<Button>1231231231</Button>
<Button>1231231231</Button>
<Button>1231231231</Button>
<Button>1231231231</Button>
<Button>1231231231</Button>
<local:Script ShowMessage="haha" />
</StackPanel>
4, 運作...
果然, 在Button add到StackPanel的Children中之後, 執行個體化Script并對這個帶有函數般名字的屬性ShowMessage設定的時候, MessageBox出現了.
實驗到此結束, 當然這個實驗幾乎沒有任何意義. 不過本人算是心滿意足地在XAML中顯示調用了函數.
然後, 這個時候, 對于習慣了C/C++編譯後運作的我來說, 有趣的事情發生了.
各位可以試着随意更改Script标簽上面的按鈕, 比如添加一個Button或是删除一個Button什麼的, 随着設計器的重新整理, MessageBox.Show(value.ToString())也将又一次地被執行到.
哈哈, 少見多怪了. 但的确很有趣不是嗎?