2015-05-29 4 views
1

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

private void AddRecord() 
    { 
     StackPanel wrp = (this.Content as Grid).Children[0] as StackPanel; 
     wrp.Children.Clear(); 
     for (int i = 0; i < m_viewModel.RecordTimeConfig.Count; i++) 
     { 
      wrp.Children.Add(m_viewModel.RecordTimeConfig[i]); 
     } 
    } 

Каждый раз, когда я нажимаю на кнопку m_viewModel.RecordTimeConfig увеличивается. Пакетная панель не имеет установленной высоты и ширины.

+0

RecordTimeConfig - это массив UserControls? – savetruman

+0

Может ли быть так же просто, как 'wrp.InvalidateArrange()' или 'wrp.InvalidateMeasure()'? – savetruman

+0

Спасибо за ответ, это список пользовательских элементов управления как wrp.InvalidateArrange(), так и wrp.InvalidateMeasure() не изменять anyrhing – Joe

ответ

0

Я нашел проблему.

Это было связано с размером пользовательского элемента управления, который был больше размера окна.

Благодарим за помощь.

1

это ваша проблема

wrp.Children.Clear(); 

Вы удаление всех элементов управления в панели стеки каждый раз, когда вы нажимаете клавишу, так что вы добавляете новый элемент управления, но вы также удаление тот, который уже есть ,

+0

Благодарим за ответ. Нет, это не проблема, потому что я добавляю элементы управления снова, элементы управления внутри этой панели стека - это пользователи, управляющие m_viewModel.RecordTimeConfig, если я удалю его, это будет исключать, что этот элемент управления уже используется. – Joe

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