2013-03-15 4 views
0

Я хочу создать страницу с динамическим управлением в телефоне Windows. Делая это, я также хочу показать прогресс барКак добавить список UIelement в Windows Phone

Ниже мой код

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
{ 
    base.OnNavigatedTo(e); 

    progressstackPanel.Visibility = Visibility.Visible;//progress bar 
    formScreen = this; 

    Deployment.Current.Dispatcher.BeginInvoke(() => 
    { 
     if (!isfst) 
     { 
      DrawScreen(); 
     } 
     else 
     { 
      //xTitlePanel is only stack panel in my xaml with vertical orientation 
      xTitlePanel.UpdateLayout(); 
     } 
     isfst = true; 
     progressstackPanel.Visibility = Visibility.Collapsed; 
    }); 
} 

//Code of DrawScreen which is adding control to my stack panels  
private void DrawScreen() 
{ 
    if (frm_getset.ChildList != null) 
    { 
      String[] arr = frm_getset.ChildList.Split(','); 

      xTitlePanel.Children.Clear(); 

      PrepareControls prepcontrol = new PrepareControls(); 

      foreach (AttributeGetSet a in _Attribute) 
      { 
       //this will return a stackpanel containing 
       // button/textbox etc.depending on a 
       StackPanel sp = prepcontrol.getControl(i, a.Label, a, formScreen); 
       try 
       { 
        xTitlePanel.Children.Add(sp); 

        ///Here I get a eception only one control is added first one 
        /// for anyone it is getting a exception Argument  
       } 
       catch(Exception ex) 
       { 
        Console.WriteLine(ex.Message); 
       } 

       i += 1; 
      } 

Система добавляет только один контроль и, когда все это попытаться выполнить xTitlePanel.Children.Add(sp); он получит исключение.

+0

Не могли бы вы показать полный фрагмент кода и XAML, к которому он относится. –

ответ

0

Я решил проблему, «xTitlePanel» - это StackPanel, который я создал в своем XAML. Я обнаружил, что вы не можете добавить еще один элемент из диспетчера в элемент управления, разбитый на xaml. Как это. поэтому я должен создать локальный стек и добавить элементы управления к этой локальной панели стека, а после завершения добавить локальную панель стека в xTitlePanel. ТЕПЕРЬ мой код выглядит ниже

filteredList = new List<FormGetSet>(); 
      if (frm_getset.ChildList != null) 
      { 
       String[] arr = frm_getset.ChildList.Split(','); 

       foreach (String x in arr) 
       { 
        filteredList.Add(_template.list_fromgetset.Where(p => p.FormID.Contains(x.Trim())).ToList()[0]); 
       } 
      } 
      xTbox_FormNameHeader.Text = frm_getset.NAME; 
      _Attribute = new List<AttributeGetSet>(); 
      _Attribute = frm_getset.list_attributegetset; 

      xTitlePanel.Children.Clear(); 

      StackPanel spPanel = new StackPanel(); 
      spPanel.Orientation = System.Windows.Controls.Orientation.Vertical; 
      spPanel.Background = new SolidColorBrush(Colors.Transparent); 
      //xTitlePanel.Children.Add(PrepareControls.getControl(1, "LABEL", "16")); 
      int i = 1; 
      // List<AttributeGetSet> _Attribute2 = new List<AttributeGetSet>(); 
      foreach (AttributeGetSet a in _Attribute) 
      { 
       PrepareControls prepcontrol = new PrepareControls(); 
       StackPanel sp= prepcontrol.getControl(i, a.Label, a, this); 
       try 
       { 
        spPanel.Children.Add(sp); 
       } 
       catch(Exception ex) 
       { 
        Console.WriteLine(ex.Message); 
       } 
       //xTitlePanel.Background = new SolidColorBrush(Colors.White); 
       //_Attribute2.Add(a); 
       i += 1; 
      } 
     xTitlePanel.Children.Add(spPanel); 

 Смежные вопросы

  • Нет связанных вопросов^_^