2015-08-25 3 views
0

Я начал разработку приложения для Windows-телефона, где я динамически создаю строку в сетке. При некоторых условиях мне нужно удалить строку и весь ее контент в этой строке.Как удалить строку в сетке в телефоне Windows C# 8.1

Вот мой пример кода.

 result = e.Parameter as string;   
     string[] acst = result.Split('|'); 
     int j = 0; 
     root2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(10) }); 
     for (int i = 6; i < acst.Length - 1; i++) 
     { 
      TextBlock mytextblock = new TextBlock(); 
      mytextblock.Name = "txtDetails" + root2.Children.Count + 1; 
      mytextblock.Text = acst[i + 1]; 
      if (mytextblock.Text != "") 
      { 
       if (mytextblock.Text.Trim() != "0.00") // if result is 0.00 then i have to delete all the content in that row. 
       { 
        if (j == 0) 
        { 

          mytextblock.FontSize = 14; 
          mytextblock.IsTextScaleFactorEnabled = false; 
          mytextblock.HorizontalAlignment = HorizontalAlignment.Stretch; 
          mytextblock.VerticalAlignment = VerticalAlignment.Center; 
          Grid.SetColumn(mytextblock, 1); 
          Grid.SetRow(mytextblock, (i)/6); 
          j++; 

        } 
        else if (j == 1) 
        { 

          mytextblock.FontSize = 14; 
          mytextblock.IsTextScaleFactorEnabled = false; 
          mytextblock.Visibility = Visibility.Collapsed; 
          mytextblock.HorizontalAlignment = HorizontalAlignment.Center; 
          mytextblock.VerticalAlignment = VerticalAlignment.Center; 
          Grid.SetColumn(mytextblock, 2); 
          Grid.SetRow(mytextblock, (i)/6); 
          j++; 

        } 
        else if (j == 2) 
        { 

          mytextblock.FontSize = 14; 
          mytextblock.IsTextScaleFactorEnabled = false; 
          mytextblock.TextWrapping = TextWrapping.Wrap; 
          mytextblock.HorizontalAlignment = HorizontalAlignment.Left; 
          mytextblock.VerticalAlignment = VerticalAlignment.Center; 
          Grid.SetColumn(mytextblock, 3); 
          Grid.SetRow(mytextblock, (i)/6); 
          j=0; 
      root2.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(60) }); 

        }        
       } 

        root2.Children.Add(mytextblock); 
      } 
       else 
       { 

        root2.RowDefinitions.RemoveAt((i/6)); // here I'm getting Arugument Exception 
       } 
      } 

, например, если я получаю mytextblock.text = 0.00 в третьем столбце (J = 2 в этом случае). мне нужно удалить содержимое в столбцах 1 и 2 или удалить конкретную строку.

Я пробовал «root2.RowDefinitions.RemoveAt», но там я получаю исключение Arugument. Где я скучаю?

Любая помощь будет высоко оценена.

ответ

0

Первоначально ваша сетка имеет 1 ряд вы создаете индекс которого равен 0. Но когда вы выполняете root2.RowDefinitions.RemoveAt((i/6)); на самом деле вы получаете root2.RowDefinitions.RemoveAt(1); Таким образом, вы должны использовать root2.RowDefinitions.RemoveAt((i/6)-1); бы решить, за исключением

Чтобы ответить на второй вопрос, код слишком запутан. Я перечисляю некоторые

 
1: Why are you starting loop from 6 
2: Why dividing i/6 
3: What exactly you are getting from result 
+0

Отлично. Теперь я получаю результат без исключения. но удаляется столбец, содержащий 0,00 в одной строке. Мне нужна вся строка, которую нужно удалить. Как достичь этого. – JMR

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