2015-10-16 4 views
1

Я создаю приложение Windows Phone (8.1), которое получает некоторые данные JSON, анализирует его и строит элементы пользовательского интерфейса по мере необходимости. Получение и синтаксический анализ отлично работают, и жизнь хороша, но элементы интерфейса исчезают через несколько секунд. Например, можно увидеть here, где пользователь нажимает кнопку, а элементы создаются, но получает разрушение. В частности, этот фрагмент кода - это то, как я его реализую.UI исчезает через несколько секунд

private void doBuild(object sender, TappedRoutedEventArgs e) { 
    Button myButton = new Button(); 
    myButton.Width = 160; 
    myButton.Height = 72; 
    myButton.Content = "Click Me"; 
    var margin = myButton.Margin; 
    margin.Top = 250; 
    margin.Left = 15; 
    myButton.Margin = margin; 
    LayoutRoot.Children.Add(myButton); 
    LayoutRoot.UpdateLayout(); 
} 

Что я делаю неправильно?

+0

Во-первых, вы» не используя MVVM, что является гораздо более простым способом кодирования приложений xaml. Я настоятельно рекомендую вам положить это и пойти учиться MVVM в приложениях WP8. Во-вторых, ничего в вашем коде здесь не проблема. Проблема лежит где-то в другом месте. Где мы не можем вам сказать. Вам нужно отладить свой код, чтобы понять, почему он очищается. Если у вас есть код, который очищает ваш пользовательский интерфейс, поставьте в него контрольную точку. Выполнение трассировки, чтобы определить, почему он вызван. – Will

+0

На вашем примере есть эффект перехода, как вы это делаете? Кнопка исчезает прямо в конце слайда, поэтому я бы искал любой тип анимации, которую вы используете (раскадровка?) –

+0

@KooKiz На этой кнопке нет другого кода, кроме упомянутого. Никакой раскадровки (честно говоря, не знал, что это вариант), больше ничего. Я не знаю, почему происходит переход. – Changer098

ответ

0

Проблема с вашим расположением. Вы указали ширину 0% для первого столбца вашей сетки. Так как ваша кнопка добавляется по-умолчанию в первом столбце, его ширина устанавливается в 0.

Либо изменить размер ваших колонок, или добавить кнопку в другой колонке:

private void doBuild(object sender, TappedRoutedEventArgs e) 
{ 
    Button myButton = new Button(); 
    myButton.Width = 160; 
    myButton.Height = 72; 
    myButton.Content = "Click Me"; 
    var margin = myButton.Margin; 
    margin.Top = 250; 
    margin.Left = 15; 
    myButton.Margin = margin; 

    Grid.SetColumn(myButton, 1); 

    LayoutRoot.Children.Add(myButton); 
    LayoutRoot.UpdateLayout(); 
} 
+0

О, черт возьми, это все решило. Спасибо огромное! – Changer098

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