DataGrid.FrozenColumnCount Propiedad

Definición

Obtiene o establece el número de columnas que no se pueden desplazar.

public:
 property int FrozenColumnCount { int get(); void set(int value); };
public int FrozenColumnCount { get; set; }
member this.FrozenColumnCount : int with get, set
Public Property FrozenColumnCount As Integer

Valor de propiedad

Número de columnas que no se pueden desplazar. El valor predeterminado registrado es 0. Para obtener más información sobre lo que puede afectar al valor, vea DependencyProperty.

Ejemplos

En el ejemplo siguiente se muestra cómo hacer que una columna se inmoviliza cuando se selecciona "Freeze Column" (Inmovilizar columna) en .ContextMenu Las columnas se mueven a la izquierda para incluirse en las columnas inmovilizadas.

<!--Defines the handlers for when the FreezeColumnCommand is executed-->
<Window.CommandBindings>
    <CommandBinding Command="{x:Static local:Window1.FreezeColumnCommand}" Executed="CommandBinding_Executed" />
</Window.CommandBindings>
<!--Defines the context menu for the ColumnHeaders and attaches the FreezeColumnCommand-->
<Window.Resources>
    <ContextMenu x:Key="ColumnHeaderMenu" IsEnabled="True"  >
        <MenuItem Header="Freeze Column" IsEnabled="True" Command="{x:Static local:Window1.FreezeColumnCommand}"
                  CommandTarget="{Binding RelativeSource={RelativeSource AncestorType=Popup}, Path=PlacementTarget}" 
                  CommandParameter="{Binding ElementName=DG1, Path=CurrentColumn.DisplayIndex}" />
    </ContextMenu>
</Window.Resources>

<Grid>
    <!--Creates a new DataGrid with a context menu for the column headers-->
    <DataGrid Name="DG1" ItemsSource="{Binding}"  >
        <DataGrid.ColumnHeaderStyle >
            <Style TargetType="DataGridColumnHeader">
                <Setter Property="ContextMenu" Value="{StaticResource ColumnHeaderMenu}" />
            </Style>
        </DataGrid.ColumnHeaderStyle>
    </DataGrid>
</Grid>
public partial class Window1 : Window
{
    
    public static RoutedUICommand FreezeColumnCommand = new RoutedUICommand();

    public Window1()
    {
        InitializeComponent();
        //GetData connects to the database and returns the data in a table.
        AdventureWorksLT2008DataSet.SalesOrderDetailDataTable dt = GetData();

        DG1.DataContext = dt;
    }
Class Window1
    Public Shared FreezeColumnCommand As New RoutedUICommand()

    Public Sub New()
        InitializeComponent()

        'GetData connects to the database and returns the data in a table.
        Dim dt As AdventureWorksLT2008DataSet.SalesOrderDetailDataTable = GetData()

        DG1.DataContext = dt
    End Sub
    private void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
    {
       //Get the column header that started the command and move that column left to freeze it.
       System.Windows.Controls.Primitives.DataGridColumnHeader header = (System.Windows.Controls.Primitives.DataGridColumnHeader)e.OriginalSource;
       if (header.Column.IsFrozen ==true)
       {
           return;
       }
       else
       {
           header.Column.DisplayIndex = DG1.FrozenColumnCount;
           DG1.FrozenColumnCount++;
       }
    }
}
Private Sub CommandBinding_Executed(ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs)
    'Get the column header that started the command and move that column left to freeze it.
    Dim header As System.Windows.Controls.Primitives.DataGridColumnHeader = DirectCast(e.OriginalSource, System.Windows.Controls.Primitives.DataGridColumnHeader)
    If header.Column.IsFrozen = True Then
        Exit Sub
    Else
        header.Column.DisplayIndex = DG1.FrozenColumnCount
        DG1.FrozenColumnCount += 1


    End If
End Sub

Comentarios

Las columnas inmovilizadas son columnas que siempre se muestran y no se pueden desplazar fuera de la visibilidad. Las columnas inmovilizadas siempre son las columnas situadas más a la izquierda en orden de presentación. No se pueden arrastrar columnas inmovilizadas al grupo de columnas desfrozen ni arrastrar columnas desfrozen al grupo de columnas inmovilizadas.

Para inmovilizar columnas, establezca la FrozenColumnCount propiedad . Las columnas más a la izquierda especificadas por el FrozenColumnCount número se inmovilizarán. Por ejemplo, si establece en FrozenColumnCount 2, las dos columnas izquierdas de la pantalla se inmovilizan. Para determinar si una columna ya está inmovilizada, compruebe la IsFrozen propiedad en .DataGridColumn

Se aplica a

Consulte también