Browse Source

fixes(DataGrid): Fix binding IsVisible

pull/6283/head
Giuseppe Lippolis 5 years ago
parent
commit
87ea2915f8
  1. 42
      src/Avalonia.Controls.DataGrid/DataGridColumn.cs

42
src/Avalonia.Controls.DataGrid/DataGridColumn.cs

@ -27,7 +27,6 @@ namespace Avalonia.Controls
private double? _minWidth; private double? _minWidth;
private bool _settingWidthInternally; private bool _settingWidthInternally;
private int _displayIndexWithFiller; private int _displayIndexWithFiller;
private bool _isVisible;
private object _header; private object _header;
private DataGridColumnHeader _headerCell; private DataGridColumnHeader _headerCell;
private IControl _editingElement; private IControl _editingElement;
@ -40,7 +39,6 @@ namespace Avalonia.Controls
/// </summary> /// </summary>
protected internal DataGridColumn() protected internal DataGridColumn()
{ {
_isVisible = true;
_displayIndexWithFiller = -1; _displayIndexWithFiller = -1;
IsInitialDesiredWidthDetermined = false; IsInitialDesiredWidthDetermined = false;
InheritsWidth = true; InheritsWidth = true;
@ -174,32 +172,42 @@ namespace Avalonia.Controls
get => _editBinding; get => _editBinding;
} }
/// <summary>
/// Defines the <see cref="IsVisible"/> property.
/// </summary>
public static StyledProperty<bool> IsVisibleProperty =
Control.IsVisibleProperty.AddOwner<DataGridColumn>();
/// <summary> /// <summary>
/// Determines whether or not this column is visible. /// Determines whether or not this column is visible.
/// </summary> /// </summary>
public bool IsVisible public bool IsVisible
{ {
get get => GetValue(IsVisibleProperty);
{ set => SetValue(IsVisibleProperty, value);
return _isVisible; }
}
set
{
if (value != IsVisible)
{
OwningGrid?.OnColumnVisibleStateChanging(this);
_isVisible = value;
if (_headerCell != null) protected override void OnPropertyChanged<T>(AvaloniaPropertyChangedEventArgs<T> change)
{ {
_headerCell.IsVisible = value; base.OnPropertyChanged(change);
}
OwningGrid?.OnColumnVisibleStateChanged(this); if (change.Property == IsVisibleProperty)
{
OwningGrid?.OnColumnVisibleStateChanging(this);
var isVisible = (change as AvaloniaPropertyChangedEventArgs<bool>).NewValue.Value;
if (_headerCell != null)
{
_headerCell.IsVisible = isVisible;
} }
OwningGrid?.OnColumnVisibleStateChanged(this);
NotifyPropertyChanged(change.Property.Name);
} }
} }
/// <summary> /// <summary>
/// Actual visible width after Width, MinWidth, and MaxWidth setting at the Column level and DataGrid level /// Actual visible width after Width, MinWidth, and MaxWidth setting at the Column level and DataGrid level
/// have been taken into account /// have been taken into account

Loading…
Cancel
Save