DataGridColumn.IsFrozen Свойство
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает значение, указывающее, запрещена ли горизонтальная прокрутка столбца.
public:
property bool IsFrozen { bool get(); };
public bool IsFrozen { get; }
member this.IsFrozen : bool
Public ReadOnly Property IsFrozen As Boolean
Значение true
, если горизонтальная прокрутка столбца невозможна; в противном случае — значение false
. Зарегистрированное значение по умолчанию — false
. Сведения о факторах, которые влияют на данное значение, см. в разделе DependencyProperty.
В следующем примере показано, как закрепить столбец при выборе ContextMenuпараметра "Закрепить столбец". Столбцы перемещаются слева, чтобы включить их в замороженные столбцы.
<!--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
IsFrozen нельзя использовать для закрепления столбца. Вместо этого задайте FrozenColumnCount свойство. Крайние левые столбцы до столбца, указанного FrozenColumnCount числом, зависают.