Vorgehensweise: Bearbeiten von Spalten und Zeilen mithilfe von ColumnDefinitionsCollections und RowDefinitionsCollectionsHow to: Manipulate Columns and Rows by Using ColumnDefinitionsCollections and RowDefinitionsCollections

Dieses Beispiel zeigt, wie Sie die Methoden in der ColumnDefinitionCollection und RowDefinitionCollection Klassen zum Durchführen von Aktionen wie das Hinzufügen, löschen oder den Inhalt der Zeilen oder Spalten zählen.This example shows how to use the methods in the ColumnDefinitionCollection and RowDefinitionCollection classes to perform actions like adding, clearing, or counting the contents of rows or columns. Sie können z. B. Add, Clear, oder Count die Elemente, die in enthaltenen eine ColumnDefinition oder RowDefinition.For example, you can Add, Clear, or Count the items that are included in a ColumnDefinition or RowDefinition.

BeispielExample

Das folgende Beispiel erstellt eine Grid -Element mit einem Name von grid1.The following example creates a Grid element with a Name of grid1. Die Grid enthält eine StackPanel enthält Button Elemente, die jeweils durch eine andere Sammlung-Methode gesteuert.The Grid contains a StackPanel that holds Button elements, each controlled by a different collection method. Beim Klicken auf eine Button, den Aufruf einer Methode in der CodeBehind-Datei aktiviert wird.When you click a Button, it activates a method call in the code-behind file.

<Grid DockPanel.Dock="Top" HorizontalAlignment="Left" Name="grid1" ShowGridLines="true" Width="625" Height="400" Background="#b0e0e6">
  <Grid.ColumnDefinitions>
    <ColumnDefinition/>
    <ColumnDefinition/>
    <ColumnDefinition/>
  </Grid.ColumnDefinitions>
  <Grid.RowDefinitions>
  <RowDefinition/>
    <RowDefinition/>
    <RowDefinition/>
  </Grid.RowDefinitions>
</Grid>

<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Width="625" DockPanel.Dock="Top">
    <Button Width="125" Click="addCol">Add Column</Button>
    <Button Width="125" Click="addRow">Add Row</Button>
    <Button Width="125" Click="clearCol">Clear All Columns</Button>
    <Button Width="125" Click="clearRow">Clear All Rows</Button>
    <Button Width="125" Click="removeCol">Remove One Column</Button>
</StackPanel>
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Width="625" DockPanel.Dock="Top">
    <Button Width="125" Click="removeRow">Remove One Row</Button>
    <Button Width="125" Click="colCount">How Many Columns?</Button>
    <Button Width="125" Click="rowCount">How Many Rows?</Button>
    <Button Width="125" Click="rem5Col">Remove 5 Columns</Button>
    <Button Width="125" Click="rem5Row">Remove 5 Rows</Button>			
    </StackPanel>
<StackPanel HorizontalAlignment="Left" Orientation="Horizontal" Width="625" DockPanel.Dock="Top">
    <Button Width="125" Click="containsRow">Contains Row?</Button>
    <Button Width="125" Click="containsCol">Contains Column?</Button>
    <Button Width="125" Click="insertRowAt">Insert Row</Button>
    <Button Width="125" Click="insertColAt">Insert Column</Button>
    <Button Width="125" Click="colReadOnly">IsReadOnly?</Button>
</StackPanel>    

In diesem Beispiel definiert eine Reihe von benutzerdefinierten Methoden, die jeweils entsprechenden zu einem Click Ereignis in der Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) Datei.This example defines a series of custom methods, each corresponding to a Click event in the Extensible Application Markup Language (XAML)Extensible Application Markup Language (XAML) file. Sie können die Anzahl der Spalten und Zeilen im Ändern der Grid auf verschiedene Weise die hinzufügen oder Entfernen von Zeilen und Spalten aus, und die Gesamtzahl der Zeilen und Spalten enthält.You can change the number of columns and rows in the Grid in several ways, which includes adding or removing rows and columns; and counting the total number of rows and columns. Um zu verhindern, dass ArgumentOutOfRangeException und ArgumentException Ausnahmen, können Sie die Überprüfung auf Fehler durch Funktionen, die die RemoveRange Methode bereitstellt.To prevent ArgumentOutOfRangeException and ArgumentException exceptions, you can use the error-checking functionality that the RemoveRange method provides.

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;

namespace columndefinitions_grid
{
    public partial class Window1 : Window
    {
        RowDefinition rowDef1;
        ColumnDefinition colDef1;

        private void addCol(object sender, RoutedEventArgs e) 
        {
            colDef1 = new ColumnDefinition();
            grid1.ColumnDefinitions.Add(colDef1);
        }

        private void addRow(object sender, RoutedEventArgs e)
        {
            rowDef1 = new RowDefinition();
            grid1.RowDefinitions.Add(rowDef1);
        }

        private void clearCol(object sender, RoutedEventArgs e)
        {
            grid1.ColumnDefinitions.Clear();
        }

        private void clearRow(object sender, RoutedEventArgs e)
        {
            grid1.RowDefinitions.Clear();
        }

        private void removeCol(object sender, RoutedEventArgs e)
        {
            if (grid1.ColumnDefinitions.Count <= 0)
            {
                tp1.Text = "No More Columns to Remove!";
            }
            else
            {
                grid1.ColumnDefinitions.RemoveAt(0);
            }
        }

        private void removeRow(object sender, RoutedEventArgs e)
        {
            if (grid1.RowDefinitions.Count <= 0)
            {
                tp1.Text = "No More Rows to Remove!";
            }
            else
            {
                grid1.RowDefinitions.RemoveAt(0);
            }
        }

        private void colCount(object sender, RoutedEventArgs e)
        {
            tp2.Text = "The current number of Columns is: " + grid1.ColumnDefinitions.Count;
        }

        private void rowCount(object sender, RoutedEventArgs e)
        {
            tp2.Text = "The current number of Rows is: " + grid1.RowDefinitions.Count;
        }

        private void rem5Col(object sender, RoutedEventArgs e)
        {
            if (grid1.ColumnDefinitions.Count < 5)
            {
                tp1.Text = "There aren't five Columns to Remove!";
            }
            else
            {
                grid1.ColumnDefinitions.RemoveRange(0,5);
            }
        }

        private void rem5Row(object sender, RoutedEventArgs e)
        {
            if (grid1.RowDefinitions.Count < 5)
            {
                tp1.Text = "There aren't five Rows to Remove!";
            }
            else
            {
                grid1.RowDefinitions.RemoveRange(0, 5);
            }
        }

        private void containsRow(object sender, RoutedEventArgs e)
        {
            if (grid1.RowDefinitions.Contains(rowDef1))
            {
                tp2.Text = "Grid Contains RowDefinition rowDef1";
            }
            else
            {
                tp2.Text = "Grid Does Not Contain RowDefinition rowDef1";
            }
        }

        private void containsCol(object sender, RoutedEventArgs e)
        {
            if (grid1.ColumnDefinitions.Contains(colDef1))
            {
                tp3.Text = "Grid Contains ColumnDefinition colDef1";
            }
            else
            {
                tp3.Text = "Grid Does Not Contain ColumnDefinition colDef1";
            }
        }

        private void colReadOnly(object sender, RoutedEventArgs e)
        {
            tp4.Text = "RowDefinitionsCollection IsReadOnly?: " + grid1.RowDefinitions.IsReadOnly.ToString();
            tp5.Text = "ColumnDefinitionsCollection IsReadOnly?: " + grid1.ColumnDefinitions.IsReadOnly.ToString();
        }

        private void insertRowAt(object sender, RoutedEventArgs e)
        {
            rowDef1 = new RowDefinition();
            grid1.RowDefinitions.Insert(grid1.RowDefinitions.Count, rowDef1);
            tp1.Text = "RowDefinition added at index position " + grid1.RowDefinitions.IndexOf(rowDef1).ToString();
        }

        private void insertColAt(object sender, RoutedEventArgs e)
        {
            colDef1 = new ColumnDefinition();
            grid1.ColumnDefinitions.Insert(grid1.ColumnDefinitions.Count, colDef1);
            tp2.Text = "ColumnDefinition added at index position " + grid1.ColumnDefinitions.IndexOf(colDef1).ToString();
        }
    }
}
Imports System
Imports System.Windows     
Imports System.Windows.Controls     
Imports System.Windows.Documents     

Namespace SDKSample

    '@ <summary>
    '@ Interaction logic for Window1.xaml
    '@ </summary>

    Partial Public Class Window1
        Inherits Window

        Dim rowDef1 As New RowDefinition
        Dim colDef1 As New ColumnDefinition

        Private Sub addCol(ByVal sender As Object, ByVal e As RoutedEventArgs)
            Dim colDef1 As New ColumnDefinition
            grid1.ColumnDefinitions.Add(colDef1)
        End Sub

        Private Sub addRow(ByVal sender As Object, ByVal e As RoutedEventArgs)
            Dim rowDef1 As New RowDefinition()
            grid1.RowDefinitions.Add(rowDef1)
        End Sub

        Private Sub clearCol(ByVal sender As Object, ByVal e As RoutedEventArgs)
            grid1.ColumnDefinitions.Clear()
        End Sub

        Private Sub clearRow(ByVal sender As Object, ByVal e As RoutedEventArgs)
            grid1.RowDefinitions.Clear()
        End Sub

        Private Sub removeCol(ByVal sender As Object, ByVal e As RoutedEventArgs)

            If (grid1.ColumnDefinitions.Count <= 0) Then
                tp1.Text = "No More Columns to Remove!"
            Else
                grid1.ColumnDefinitions.RemoveAt(0)
            End If
        End Sub

        Private Sub removeRow(ByVal sender As Object, ByVal e As RoutedEventArgs)
            If (grid1.RowDefinitions.Count <= 0) Then
                tp1.Text = "No More Rows to Remove!"
            Else
                grid1.RowDefinitions.RemoveAt(0)
            End If
        End Sub

        Private Sub colCount(ByVal sender As Object, ByVal e As RoutedEventArgs)
            tp2.Text = "The current number of Columns is: " + grid1.ColumnDefinitions.Count.ToString()
        End Sub

        Private Sub rowCount(ByVal sender As Object, ByVal e As RoutedEventArgs)
            tp2.Text = "The current number of Rows is: " + grid1.RowDefinitions.Count.ToString()
        End Sub

        Private Sub rem5Col(ByVal sender As Object, ByVal e As RoutedEventArgs)
            If (grid1.ColumnDefinitions.Count < 5) Then
                tp1.Text = "There aren't five Columns to Remove!"
            Else
                grid1.ColumnDefinitions.RemoveRange(0, 5)
            End If
        End Sub

        Private Sub rem5Row(ByVal sender As Object, ByVal e As RoutedEventArgs)
            If (grid1.RowDefinitions.Count < 5) Then
                tp1.Text = "There aren't five Rows to Remove!"
            Else
                grid1.RowDefinitions.RemoveRange(0, 5)
            End If
        End Sub

        Private Sub containsRow(ByVal sender As Object, ByVal e As RoutedEventArgs)
            If (grid1.RowDefinitions.Contains(rowDef1)) Then
                tp2.Text = "Grid Contains RowDefinition rowDef1"
            Else
                tp2.Text = "Grid Does Not Contain RowDefinition rowDef1"
            End If
        End Sub

        Private Sub containsCol(ByVal sender As Object, ByVal e As RoutedEventArgs)
            If (grid1.ColumnDefinitions.Contains(colDef1)) Then
                tp3.Text = "Grid Contains ColumnDefinition colDef1"
            Else
                tp3.Text = "Grid Does Not Contain ColumnDefinition colDef1"
            End If
        End Sub

        Private Sub colReadOnly(ByVal sender As Object, ByVal e As RoutedEventArgs)
            tp4.Text = "RowDefinitionsCollection IsReadOnly?: " + grid1.RowDefinitions.IsReadOnly.ToString()
            tp5.Text = "ColumnDefinitionsCollection IsReadOnly?: " + grid1.ColumnDefinitions.IsReadOnly.ToString()
        End Sub

        Private Sub insertRowAt(ByVal sender As Object, ByVal e As RoutedEventArgs)
            Dim rowDef1 As New RowDefinition
            grid1.RowDefinitions.Insert(grid1.RowDefinitions.Count, rowDef1)
            tp1.Text = "RowDefinition added at index position " + grid1.RowDefinitions.IndexOf(rowDef1).ToString()
        End Sub

        Private Sub insertColAt(ByVal sender As Object, ByVal e As RoutedEventArgs)
            Dim colDef1 As New ColumnDefinition()
            grid1.ColumnDefinitions.Insert(grid1.ColumnDefinitions.Count, colDef1)
            tp2.Text = "ColumnDefinition added at index position " + grid1.ColumnDefinitions.IndexOf(colDef1).ToString()
        End Sub


    End Class
End Namespace

Siehe auchSee also