Silverlight//XAML物件的事件觸發 vs CS的函數
¶Silverlight//XAML物件的事件觸發 vs CS的函數
原文連結: https://darkblack01.blogspot.com/2014/05/silverlightxaml-vs-cs.html
移植時的最後更新日期: 2014-05-13T13:36:04.209+08:00
在Silverlight中,function和XAML的互動物件,似乎是沒有直接關係的,也就是說,如果你沒有依照下面這樣做,你的Silverlight就是一堆介面元件與function而已,它們互不認識唷。
Silverlight說方便是不方便,說難也不難。怎麼說呢?我們現在要講的,竟然有很多方式可以完成。在此講兩個方式,我覺得比較簡單,而且適用於不同取向的設計者。
第一種方式,適合給做視覺的網頁設計師。
.XAML檔
在XAML,介面物件與物件的事件要觸發的function註冊在一起了。 <Grid x:Name=“LayoutRoot” Background=“White”>
<StackPanel>
<Button Name=“cmdClickMe” Content=“ClickMe!” Margin=“5” Click=“cmdClickMe_Click”/>
</StackPanel>
</Grid>
.cs檔
在cs,只要對物件的行為做定義即可。不需也無法修改什麼物件要觸發什麼function。namespace SilverlightApplication1
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
int i = 0;
private void cmdClickMe_Click(object sender, RoutedEventArgs e)
{
cmdClickMe.Content = "this is " + i++;
}
}
}
第二種方式,適合給做介面的程式設計師。
.xaml檔
在XAML,只有定義介面的物件名稱。 <Grid x:Name=“LayoutRoot” Background=“White”>
<StackPanel>
<Button Name=“cmdClickMe” Content=“ClickMe!” Margin=“5”/>
</StackPanel>
</Grid>
.cs檔
在cs才定義該物件的行為,什麼事件會觸發什麼functionnamespace SilverlightApplication1
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
cmdClickMe.Click += cmdClickMe_Click; //委派 XamlFunction = Csfunction
}
int i = 0;
private void cmdClickMe_Click(object sender, RoutedEventArgs e)
{
cmdClickMe.Content = "this is " + i++;
}
}
}
我自己覺得第二種比較適合我,給大家參考看看。個人的見解,寫下這一段之前,還沒有拜讀任何大師的作品,所以不要太相信呀。
因為,XAML與cs檔之間,畢竟還是有彈性上的差異。XAML上屬靜態定義,在CS上屬動態定義,善用程式碼做動態的變化,在頁面呈現給使用者看之後,還可以保留對介面物件的事件與CS函數的委派關係做修改的空間。
最後,兩個方法都使用會怎樣?
也就是,在XAML註冊了,也在CS中用了委派。那會執行兩次?還是視為一次執行?
試完的結果是,執行兩次。XDDD
發表於