星期三, 5月 18, 2011

Silverlight 的初始值

最近在學習 Silverlight,這裡紀錄一下在寫 Silverlight 時,會常常用到的技巧。我們初始程式時,經常都會給程式初始值,那 Silverlight 要如何給初始值呢?有兩種方法,一是用 QueryString,這方式在寫網頁的時候一定常用,二是可以設定放置在 Silverlight 的 Html 的參數,有點模糊吧!我們直接看code..

第一種方法 QueryString

http://localhost:2418/?qs1=123&qs2=456&qs3=789

xaml

<StackPanel x:Name="LayoutRoot" Background="White">
<TextBlock x:Name="tbInitValue" TextWrapping="Wrap" Text="InitValue:" Foreground="Red"/>
<StackPanel x:Name="stInitValue" HorizontalAlignment="Left" Margin="8,0,0,0" />
<TextBlock x:Name="tbQueryString" TextWrapping="Wrap" Text="QueryString:" Foreground="Red"/>
<StackPanel x:Name="stQueryString" HorizontalAlignment="Left" Margin="8,0,0,0"/>
</StackPanel>

.cs

public partial class InitValue : UserControl
{
public InitValue()
{
InitializeComponent();

//QueryString
var qs = HtmlPage.Document.QueryString;
foreach (var key in qs.Keys)
{
TextBlock tb = new TextBlock();
tb.Text = string.Format("{0}:{1}", key, qs[key]);
stQueryString.Children.Add(tb);
}

}
}

第二種方法 InitParams

.App.xaml.cs

private void Application_Startup(object sender, StartupEventArgs e)
{
var obj = new InitValue.InitValue();
this.RootVisual = obj;
//InitParams
foreach (var key in e.InitParams.Keys)
{
TextBlock tb = new TextBlock();
tb.Text = string.Format("{0}:{1}",key, e.InitParams[key]);
obj.stInitValue.Children.Add(tb);
}
}

.html

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="/ClientBin/SilverlightApplication1.xap">
<param name="onError" value="onSilverlightError">
<param name="onError" value="onSilverlightError">
<param name="background" value="silver">
<param name="minRuntimeVersion" value="3.0.40818.0">
<param name="autoUpgrade" value="true">
<param name="enableHtmlAccess" value="true">

<param name="initParams" value="initp1=a987,initp2=b654,initp3=c321">

<param name="windowless" value="false">
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;v=3.0.40818.0" style="text-decoration: none;">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none;">
</a>
</object>

結果:

image

這裡做個簡單的說明,用 InitParams 的時候需要在 App.xmal.cs 裡面處理,在用 QueryString 需要在 xmal.cs 裡面處理,這兩個的差別要注意一下,有問題再一起討論吧!!

參考:
http://www.switchonthecode.com/tutorials/silverlight-2-using-initparams

1 則留言:

jeremy 提到...

帖子不错,多谢楼主 分享心得
美国祛痘