2014-01-16 6 views
0

Привет Я новичок в Silverlight. Ниже мой ASPX кодPass Параметр от aspx до xaml

<div id="silverlightControlHost"> 
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 
     <param name="source" value="ClientBin/ICartPrinting.xap"/> 
     <param name="onError" value="onSilverlightError" /> 
     <param name="background" value="white" /> 
     <param name="minRuntimeVersion" value="5.0.61118.0" /> 
     <param name="initparams" id="initParams" runat="server" value="key1=10" /> 
     <param name="autoUpgrade" value="true" /> 
     <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=5.0.61118.0" style="text-decoration:none"> 
      <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/> 
     </a> 
    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div> 

Я передаю значение 10 с помощью initparams тега. Мой MainPage.xaml кода

private void Application_Startup(object sender, StartupEventArgs e) 
    { 
     var paramvalues = e.InitParams; 
     foreach (var item in paramvalues) 
     { 
      MessageBox.Show(item.Value);  
     } 
    } 

В соответствии с этим сообщением поля кода должен быть шоу, но когда я запускаю приложение, не окно сообщения не появится. Я также не могу отладить код Silverlight. Любая помощь будет назначена. Спасибо

ответ

0

Я не думаю, что вы можете вызвать визуальные элементы управления во время запуска приложения. Попробуйте что-то вроде этого, чтобы получить значение:

<param name="initParams" value="key1=10" /> 

private void Application_Startup(object sender, StartupEventArgs e) 
{ 
    foreach (var item in e.InitParams) 
    { 
     this.Resources.Add(item.Key, item.Value); 
    } 

    this.RootVisual = new MainPage(); 
} 


public partial class MainPage : UserControl 
{ 
    string module = string.Empty; 
    int key1 = 0; 

    public MainPage() 
    { 
     InitializeComponent(); 

     this.Loaded += new RoutedEventHandler(MainPage_Loaded); 
    } 

    void MainPage_Loaded(object sender, RoutedEventArgs e) 
    { 

     if (App.Current.Resources.Contains("key1")) 
     { 
      int.TryParse(App.Current.Resources["key1"].ToString(), out key1); 
     } 

    } 
} 
0

Вы должны установить RootVisual, прежде чем можно отобразить MessageBox.

private void Application_Startup(object sender, StartupEventArgs e) 
{ 
    this.RootVisual = new MainPage(); 

    var paramvalues = e.InitParams; 
    foreach (var item in paramvalues) 
    { 
     MessageBox.Show(item.Value);  
    } 
} 
Смежные вопросы