Udostępnij za pośrednictwem


DataGrid.FrozenColumnCount Właściwość

Definicja

Pobiera lub ustawia liczbę kolumn bez przewijania.

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

Wartość właściwości

Liczba kolumn bez przewijania. Zarejestrowana wartość domyślna to 0. Aby uzyskać więcej informacji o tym, co może wpływać na wartość, zobacz DependencyProperty.

Przykłady

W poniższym przykładzie pokazano, jak ustawić kolumnę zamarzniętą po wybraniu pozycji "Zablokuj kolumnę" z elementu ContextMenu. Kolumny są przenoszone z lewej strony, aby zostały uwzględnione w zamrożonych kolumnach.

<!--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

Uwagi

Zablokowane kolumny to kolumny, które są zawsze wyświetlane i nie można ich przewijać z widocznością. Kolumny zamrożone są zawsze kolumnami z lewej strony w kolejności wyświetlania. Nie można przeciągać zamrożonych kolumn do grupy niezarośniętych kolumn ani przeciągać niezamrożonych kolumn do grupy zamrożonych kolumn.

Aby zablokować kolumny, ustaw FrozenColumnCount właściwość . Kolumny z lewej strony określone przez FrozenColumnCount liczbę staną się zamrożone. Jeśli na przykład ustawisz wartość FrozenColumnCount 2, dwie lewe kolumny na ekranie zostaną zamrożone. Aby określić, czy kolumna jest już zamrożona, sprawdź IsFrozen właściwość w obiekcie DataGridColumn.

Dotyczy

Zobacz też