Silverlight//XAML物件的事件觸發 vs CS的函數

  1. Silverlight//XAML物件的事件觸發 vs CS的函數
    1. 第一種方式,適合給做視覺的網頁設計師。
      1. .XAML檔
      2. .cs檔
    2. 第二種方式,適合給做介面的程式設計師。
      1. .xaml檔
      2. .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才定義該物件的行為,什麼事件會觸發什麼function
namespace 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