Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

DataGridColumn.IsFrozen Property

 

Gets a value that indicates whether the column is prevented from scrolling horizontally.

Namespace:   System.Windows.Controls
Assembly:  PresentationFramework (in PresentationFramework.dll)

public bool IsFrozen { get; internal set; }

Property Value

Type: System.Boolean

true if the column cannot be scrolled horizontally; otherwise, false. The registered default is false. For information about what can influence the value, see DependencyProperty.

IsFrozen cannot be used to freeze a column. Instead, set the FrozenColumnCount property. The leftmost columns up to the column that is specified by the FrozenColumnCount number will freeze in place.

The following example shows how to freeze a column when "Freeze Column" is selected from the ContextMenu. Columns are moved to the left in order to be included in the frozen columns.

<!--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;
    }
    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++;
       }


    }

}

.NET Framework
Available since 4.0
Silverlight
Available since 2.0
Return to top
Show:
© 2017 Microsoft