using System.Windows;
using System.Windows.Controls;
using ExtendedGrid.ExtendedGridControl;
namespace ExtendedGrid.Classes
{
///
/// Class for displaying the row numbers in the row headers.
///
public class DataGridBehavior
{
public static DependencyProperty DisplayRowNumberProperty =
DependencyProperty.RegisterAttached("DisplayRowNumber",
typeof(bool),
typeof(DataGridBehavior),
new FrameworkPropertyMetadata(false, OnRowNumbersChanged));
///
/// Gets the DisplayRowNumberProperty's value.
///
/// The target to get the value from
/// The value
public static bool GetRowNumber(DependencyObject target)
{
return (bool)target.GetValue(DisplayRowNumberProperty);
}//end GetDisplayRowNumber
///
/// Sets the DisplayRowNumberProperty to value.
///
/// The target to set the property of
/// The value to set the property to
public static void SetRowNumber(DependencyObject target, bool value)
{
target.SetValue(DisplayRowNumberProperty, value);
}//end SetDisplayRowNumber
///
/// Subscribes or unsubscribes the LoadingRow and UnloadingRow events to the RefreshRowNumbers method
/// in order to properly update the row numbers when rows are added or deleted.
///
///
///
private static void OnRowNumbersChanged(DependencyObject source, DependencyPropertyChangedEventArgs args)
{
DataGrid grid = source as DataGrid;
if (grid == null)
return;
if ((bool)args.NewValue)
{
grid.LoadingRow += RefreshRowNumbers;
grid.UnloadingRow += RefreshRowNumbers;
}
else
{
grid.LoadingRow -= RefreshRowNumbers;
grid.UnloadingRow -= RefreshRowNumbers;
}
}//end OnRowNumbersChanged
///
/// Event handler that handles refreshing the row numbers in the row headers.
///
///
///
private static void RefreshRowNumbers(object sender, DataGridRowEventArgs args)
{
var grid = sender as ExtendedDataGrid;
if (grid == null)
return;
if (grid.IsGroupByOn)
return;
foreach (var item in grid.Items)
{
var row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromItem(item);
if (row != null && row.GetIndex()!=-1)
row.Header = (row.GetIndex() + 1).ToString();
}
}//end RefreshRowNumbers
}//end class DataGridBehavior
}//end namespace