0

行と列が動的に入力されるグリッドがあります。行を削除するには、次のコードを使用します。

seivesTorGrid.RowDefinitions.RemoveAt(rowIndex+1);

すべて手動でのみ行われます。行を削除した後の操作の結果は満足のいくものではありません: ここに画像の説明を入力してください

xmlでのグリッドの定義は次のとおりです。

<Grid Name="seivesTorGrid" ShowGridLines="False" Margin="10, 0, 10, 0"
                  Width="Auto" Height="Auto" >

                <Grid.ColumnDefinitions> </Grid.ColumnDefinitions>

                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto" MinHeight="25"/>
                </Grid.RowDefinitions>
            </Grid>

これが私がCols&Rowをグリッドに追加する方法です:

        private void AddColumns()
    {
        ColumnDefinition newCol = new ColumnDefinition();
        //newCol.Width = GridLength.Auto;
        newCol.MinWidth = 50;
        newCol.MaxWidth = 150;
        seivesTorGrid.ColumnDefinitions.Add(newCol);

        GridViewColumnHeader gch = new GridViewColumnHeader();
        gch.Content = "ID";
        gch.FontSize = 12;

        Grid.SetColumn(gch, 0);
        seivesTorGrid.Children.Add(gch);

        for (int i = 0; i < GlobalUtils.TOR_List.Count; i++)
        {
            newCol = new ColumnDefinition();
            newCol.Width = GridLength.Auto;
            newCol.MinWidth = 80;
            newCol.MaxWidth = 150;                
            seivesTorGrid.ColumnDefinitions.Add(newCol);

            gch = new GridViewColumnHeader();
            gch.Content = GlobalUtils.TOR_List[i].TOR_Id;
            gch.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Center;
            gch.VerticalContentAlignment = System.Windows.VerticalAlignment.Center;
            gch.FontSize = 12;

            Grid.SetColumn(gch, i + 1);
            seivesTorGrid.Children.Add(gch);                
        }

    }

    private void AddRowToGrid(String id)
    {
        RowDefinition newRow = new RowDefinition();

        seivesTorGrid.RowDefinitions.Add(newRow);
        int rowIndex = seivesTorGrid.RowDefinitions.Count - 1;

        TextBlock idTB = new TextBlock();
        idTB.Text = id;
        idTB.TextAlignment = TextAlignment.Left;
        idTB.VerticalAlignment = System.Windows.VerticalAlignment.Center;

        Grid.SetColumn(idTB, 0);
        Grid.SetRow(idTB, rowIndex);
        seivesTorGrid.Children.Add(idTB);

        for (int i = 1; i < 3; i++)
        {
            Button tempBtn = new Button() {
                Height=25, 
                Width=80,
                Margin = new Thickness(5),
                Content = "Add", 
                Background = Brushes.Brown, 
                Tag = rowIndex
            };

            tempBtn.Click += OnIdButtonClick;

            Grid.SetColumn(tempBtn, i);
            Grid.SetRow(tempBtn, rowIndex);                
            seivesTorGrid.Children.Add(tempBtn);
        }                       
    }

行を削除した後の結果が適切でないのはなぜですか?何を修正する必要がありますか?

どんな助けでも大歓迎です。

4

1 に答える 1

1

もちろん、その行のすべての子を削除する必要もあります。

seivesTorGrid.Childrenこれは、コレクションのすべての要素を意味し、Grid.GetRow()削除されるインデックスを返します。

于 2012-05-24T12:14:03.000 に答える