Skip to content

Commit 04da4d7

Browse files
committed
Fix #16: exception clicking select all on a single select grid
1 parent d86c5f9 commit 04da4d7

19 files changed

+35
-294
lines changed

DataGridExtensions.sln.DotSettings

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,7 @@
33
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MemberCanBePrivate_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
44
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=MemberCanBePrivate_002ELocal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
55
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnusedMember_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
6+
<s:Int64 x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/BLANK_LINES_BETWEEN_USING_GROUPS/@EntryValue">1</s:Int64>
7+
<s:Boolean x:Key="/Default/CodeStyle/CSharpUsing/AddImportsToDeepestScope/@EntryValue">True</s:Boolean>
8+
<s:Boolean x:Key="/Default/CodeStyle/CSharpUsing/QualifiedUsingAtNestedScope/@EntryValue">True</s:Boolean>
69
<s:String x:Key="/Default/CodeStyle/Naming/JavaScriptNaming/UserRules/=TS_005FMIXED_005FENUM/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String></wpf:ResourceDictionary>

DataGridExtensions/Behaviors/ClearTextBoxOnButtonClickBehavior.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
namespace DataGridExtensions.Behaviors
22
{
3-
using System.Diagnostics.Contracts;
43
using System.Windows;
54
using System.Windows.Controls;
65
using System.Windows.Interactivity;
@@ -23,7 +22,6 @@ protected override void OnAttached()
2322
base.OnAttached();
2423

2524
var button = AssociatedObject;
26-
Contract.Assume(button != null);
2725

2826
button.Click += AssociatedObject_Click;
2927
}
@@ -37,7 +35,6 @@ protected override void OnAttached()
3735
protected override void OnDetaching()
3836
{
3937
var button = AssociatedObject;
40-
Contract.Assume(button != null);
4138

4239
button.Click -= AssociatedObject_Click;
4340

DataGridExtensions/Behaviors/DisableTargetWhileEditingBehavior.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
namespace DataGridExtensions.Behaviors
22
{
3-
using System.Diagnostics.Contracts;
43
using System.Windows;
54
using System.Windows.Controls;
65
using System.Windows.Interactivity;
@@ -35,7 +34,6 @@ protected override void OnAttached()
3534
base.OnAttached();
3635

3736
var dataGrid = AssociatedObject;
38-
Contract.Assume(dataGrid != null);
3937

4038
dataGrid.PreparingCellForEdit += DataGrid_PreparingCellForEdit;
4139
dataGrid.CellEditEnding += DataGrid_CellEditEnding;
@@ -47,7 +45,6 @@ protected override void OnDetaching()
4745
base.OnDetaching();
4846

4947
var dataGrid = AssociatedObject;
50-
Contract.Assume(dataGrid != null);
5148

5249
dataGrid.PreparingCellForEdit -= DataGrid_PreparingCellForEdit;
5350
dataGrid.CellEditEnding -= DataGrid_CellEditEnding;

DataGridExtensions/Behaviors/ExtendedStarSizeBehavior.cs

Lines changed: 4 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@
44
using System.Collections.Generic;
55
using System.Collections.Specialized;
66
using System.ComponentModel;
7-
using System.Diagnostics;
8-
using System.Diagnostics.CodeAnalysis;
9-
using System.Diagnostics.Contracts;
107
using System.Linq;
118
using System.Windows;
129
using System.Windows.Controls;
@@ -65,7 +62,7 @@ public ExtendedStarSizeBehavior()
6562
[CanBeNull]
6663
public Style ColumnHeaderGripperToolTipStyle
6764
{
68-
get => (Style)GetValue(ColumnHeaderGripperToolTipStyleProperty);
65+
get => (Style)GetValue(ColumnHeaderGripperToolTipStyleProperty);
6966
set => SetValue(ColumnHeaderGripperToolTipStyleProperty, value);
7067
}
7168
/// <summary>
@@ -81,7 +78,7 @@ public Style ColumnHeaderGripperToolTipStyle
8178
[CanBeNull]
8279
public IResourceLocator ResourceLocator
8380
{
84-
get => (IResourceLocator)GetValue(ResourceLocatorProperty);
81+
get => (IResourceLocator)GetValue(ResourceLocatorProperty);
8582
set => SetValue(ResourceLocatorProperty, value);
8683
}
8784
/// <summary>
@@ -97,25 +94,20 @@ protected override void OnAttached()
9794
base.OnAttached();
9895

9996
var dataGrid = AssociatedObject;
100-
Contract.Assume(dataGrid != null);
10197

10298
dataGrid.Loaded += DataGrid_Loaded;
10399
dataGrid.Unloaded += DataGrid_Unloaded;
104100
}
105101

106102
private void DataGrid_Loaded([NotNull] object sender, [NotNull] EventArgs e)
107103
{
108-
Contract.Requires(sender != null);
109-
110104
var dataGrid = (DataGrid)sender;
111105

112106
dataGrid.BeginInvoke(DispatcherPriority.Background, () => DataGrid_Loaded(dataGrid));
113107
}
114108

115109
private void DataGrid_Loaded([NotNull] DataGrid dataGrid)
116110
{
117-
Contract.Requires(dataGrid != null);
118-
119111
_scrollViewer = dataGrid.Template?.FindName("DG_ScrollViewer", dataGrid) as ScrollViewer;
120112
if (_scrollViewer == null)
121113
return;
@@ -137,8 +129,6 @@ private void DataGrid_Loaded([NotNull] DataGrid dataGrid)
137129

138130
private void DataGrid_Unloaded([NotNull] object sender, [NotNull] RoutedEventArgs e)
139131
{
140-
Contract.Requires(sender != null);
141-
142132
var dataGrid = (DataGrid)sender;
143133

144134
var scrollViewer = _scrollViewer;
@@ -218,16 +208,12 @@ private void DataGrid_ColumnActualWidthChanged([NotNull] object sender, [NotNull
218208

219209
private void DataGrid_ColumnVisibilityChanged([NotNull] object sender, [NotNull] EventArgs e)
220210
{
221-
Contract.Requires(sender != null);
222-
223211
UpdateColumnWidths((DataGrid)sender, null, UpdateMode.ResetStarSize);
224212
_updateColumnGripperToolTipVisibilityThrottle.Tick();
225213
}
226214

227215
private void UpdateColumnWidths([NotNull] DataGrid dataGrid, [CanBeNull] DataGridColumn modifiedColum, UpdateMode updateMode)
228216
{
229-
Contract.Requires(dataGrid != null);
230-
231217
// ReSharper disable PossibleNullReferenceException
232218
var dataGridColumns = dataGrid.Columns
233219
.OrderBy(c => c.DisplayIndex)
@@ -265,9 +251,6 @@ private static bool ApplyStarSize([NotNull, ItemNotNull] IEnumerable<DataGridCol
265251

266252
private bool DistributeAvailableSize([NotNull] DataGrid dataGrid, [NotNull, ItemNotNull] DataGridColumn[] dataGridColumns, [CanBeNull] DataGridColumn modifiedColum, UpdateMode updateMode)
267253
{
268-
Contract.Requires(dataGrid != null);
269-
Contract.Requires(dataGridColumns != null);
270-
271254
var scrollViewer = _scrollViewer;
272255
if (scrollViewer == null)
273256
return false;
@@ -314,8 +297,6 @@ private bool DistributeAvailableSize([NotNull] DataGrid dataGrid, [NotNull, Item
314297

315298
private static void HijackStarSizeColumnsInfo([NotNull] DataGrid dataGrid)
316299
{
317-
Contract.Requires(dataGrid != null);
318-
319300
foreach (var column in dataGrid.Columns)
320301
{
321302
// ReSharper disable once PossibleNullReferenceException
@@ -361,12 +342,8 @@ private void UpdateColumnGripperToolTipVisibility()
361342

362343
private void InjectColumnHeaderStyle([NotNull] DataGrid dataGrid)
363344
{
364-
Contract.Requires(dataGrid != null);
365-
366345
var baseStyle = dataGrid.ColumnHeaderStyle ?? (Style)dataGrid.FindResource(typeof(DataGridColumnHeader));
367346

368-
Contract.Assume(baseStyle != null);
369-
370347
if (baseStyle.Setters.OfType<Setter>().Any(setter => setter.Property == ColumnHeaderGripperExtenderProperty))
371348
return;
372349

@@ -377,15 +354,11 @@ private void InjectColumnHeaderStyle([NotNull] DataGrid dataGrid)
377354

378355
private static double GetActualWidth([NotNull] DataGridColumn column)
379356
{
380-
Contract.Requires(column != null);
381-
382357
return column.ActualWidth;
383358
}
384359

385360
private static double GetStarSize([NotNull] DataGridColumn column)
386361
{
387-
Contract.Requires(column != null);
388-
389362
return column.GetValue<double>(StarSizeProperty);
390363
}
391364

@@ -424,17 +397,15 @@ private static void ColumnHeaderGripperExtender_Changed([NotNull] DependencyObje
424397

425398
private void ApplyGripperToolTip([NotNull] DataGridColumnHeader columnHeader, [NotNull] string gripperName, [NotNull] DependencyProperty toolTipProperty)
426399
{
427-
Contract.Requires(columnHeader != null);
428-
429400
if (!(columnHeader.Template?.FindName(gripperName, columnHeader) is Thumb gripper))
430401
return;
431402

432403
var dataGrid = AssociatedObject;
433404
if (dataGrid == null)
434405
return;
435406

436-
var style = ColumnHeaderGripperToolTipStyle
437-
?? (ResourceLocator?.FindResource(dataGrid, ColumnHeaderGripperToolTipStyleKey)
407+
var style = ColumnHeaderGripperToolTipStyle
408+
?? (ResourceLocator?.FindResource(dataGrid, ColumnHeaderGripperToolTipStyleKey)
438409
?? dataGrid.TryFindResource(ColumnHeaderGripperToolTipStyleKey)) as Style;
439410

440411
var toolTip = new ToolTip { Style = style };
@@ -453,13 +424,5 @@ private enum UpdateMode
453424
Default,
454425
ResetStarSize
455426
}
456-
457-
[ContractInvariantMethod]
458-
[SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic", Justification = "Required for code contracts.")]
459-
[Conditional("CONTRACTS_FULL")]
460-
private void ObjectInvariant()
461-
{
462-
Contract.Invariant(_updateColumnGripperToolTipVisibilityThrottle != null);
463-
}
464427
}
465428
}

DataGridExtensions/ColumnStyles.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using System.Collections.ObjectModel;
55
using System.Collections.Specialized;
66
using System.Diagnostics.CodeAnalysis;
7-
using System.Diagnostics.Contracts;
87
using System.Linq;
98
using System.Reflection;
109
using System.Windows;
@@ -27,7 +26,6 @@ public static class ColumnStyles
2726
[AttachedPropertyBrowsableForType(typeof(DataGrid))]
2827
public static DataGridColumnStyleCollection GetDefaultColumnStyles([NotNull] DataGrid dataGrid)
2928
{
30-
Contract.Requires(dataGrid != null);
3129
return (DataGridColumnStyleCollection)dataGrid.GetValue(DefaultColumnStylesProperty);
3230
}
3331
/// <summary>
@@ -37,7 +35,6 @@ public static DataGridColumnStyleCollection GetDefaultColumnStyles([NotNull] Dat
3735
/// <param name="value">The styles.</param>
3836
public static void SetDefaultColumnStyles([NotNull] DataGrid dataGrid, [CanBeNull, ItemNotNull] DataGridColumnStyleCollection value)
3937
{
40-
Contract.Requires(dataGrid != null);
4138
dataGrid.SetValue(DefaultColumnStylesProperty, value);
4239
}
4340
/// <summary>
@@ -47,7 +44,6 @@ public static void SetDefaultColumnStyles([NotNull] DataGrid dataGrid, [CanBeNul
4744
public static readonly DependencyProperty DefaultColumnStylesProperty =
4845
DependencyProperty.RegisterAttached("DefaultColumnStyles", typeof(DataGridColumnStyleCollection), typeof(ColumnStyles), new FrameworkPropertyMetadata(null, DefaultColumnStyles_Changed));
4946

50-
[ContractVerification(false)]
5147
[SuppressMessage("ReSharper", "AssignNullToNotNullAttribute")]
5248
private static void DefaultColumnStyles_Changed([NotNull] DependencyObject d, DependencyPropertyChangedEventArgs e)
5349
{
@@ -65,7 +61,6 @@ private static void DefaultColumnStyles_Changed([NotNull] DependencyObject d, De
6561
dataGrid.Columns.CollectionChanged += (_, args) => Columns_CollectionChanged(styles, args);
6662
}
6763

68-
[ContractVerification(false)]
6964
[SuppressMessage("ReSharper", "AssignNullToNotNullAttribute")]
7065
[SuppressMessage("ReSharper", "PossibleNullReferenceException")]
7166
private static void Columns_CollectionChanged([NotNull, ItemNotNull] DataGridColumnStyleCollection styles, [NotNull] NotifyCollectionChangedEventArgs args)
@@ -80,9 +75,6 @@ private static void Columns_CollectionChanged([NotNull, ItemNotNull] DataGridCol
8075

8176
private static void ApplyStyle([NotNull, ItemNotNull] DataGridColumnStyleCollection styles, [NotNull] DependencyObject column)
8277
{
83-
Contract.Requires(styles != null);
84-
Contract.Requires(column != null);
85-
8678
var style = styles.FirstOrDefault(s => s.ColumnType == column.GetType());
8779

8880
if (style == null)
@@ -94,15 +86,10 @@ private static void ApplyStyle([NotNull, ItemNotNull] DataGridColumnStyleCollect
9486

9587
private static void SetStyleBinding([NotNull] DependencyObject column, [NotNull] DependencyProperty property, [NotNull] DataGridColumnStyle style)
9688
{
97-
Contract.Requires(column != null);
98-
Contract.Requires(property != null);
99-
Contract.Requires(style != null);
100-
10189
// ElementStyle and EditingElementStyle are not defined at the base class, but are different property for e.g. bound and combo box column
10290
// => use reflection to get the effective property for the specified column.
10391

10492
var propertyName = property.Name;
105-
Contract.Assume(propertyName != null);
10693
var columnType = column.GetType();
10794

10895
var defaultStyle = columnType.GetProperty("Default" + propertyName, BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy)?.GetValue(null, null) as Style;

DataGridExtensions/DataGridEventsProvider.cs

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
using System.Collections;
55
using System.Collections.Specialized;
66
using System.ComponentModel;
7-
using System.Diagnostics.Contracts;
87
using System.Windows.Controls;
98

109
using JetBrains.Annotations;
@@ -76,60 +75,44 @@ private void Columns_CollectionChanged([NotNull] object sender, [NotNull] Notify
7675

7776
private void RemoveEventHandlers([NotNull] DataGridColumn column)
7877
{
79-
Contract.Requires(column != null);
80-
8178
VisibilityPropertyDescriptor.RemoveValueChanged(column, DataGridColumnVisibility_Changed);
8279
ActualWidthPropertyDescriptor.RemoveValueChanged(column, DataGridColumnActualWidth_Changed);
8380
DisplayIndexPropertyDescriptor.RemoveValueChanged(column, DataGridColumnDisplayIndex_Changed);
8481
}
8582

8683
private void AddEventHandlers([NotNull] DataGridColumn column)
8784
{
88-
Contract.Requires(column != null);
89-
9085
VisibilityPropertyDescriptor.AddValueChanged(column, DataGridColumnVisibility_Changed);
9186
ActualWidthPropertyDescriptor.AddValueChanged(column, DataGridColumnActualWidth_Changed);
9287
DisplayIndexPropertyDescriptor.AddValueChanged(column, DataGridColumnDisplayIndex_Changed);
9388
}
9489

9590
private void OnColumnVisibilityChanged([NotNull] DataGridColumn column)
9691
{
97-
Contract.Requires(column != null);
98-
9992
ColumnVisibilityChanged?.Invoke(_dataGrid, new DataGridColumnEventArgs(column));
10093
}
10194

10295
private void OnColumnActualWidthChanged([NotNull] DataGridColumn column)
10396
{
104-
Contract.Requires(column != null);
105-
10697
ColumnActualWidthChanged?.Invoke(_dataGrid, new DataGridColumnEventArgs(column));
10798
}
10899

109100
private void OnColumnDisplayIndexChanged([NotNull] DataGridColumn column)
110101
{
111-
Contract.Requires(column != null);
112-
113102
ColumnDisplayIndexChanged?.Invoke(_dataGrid, new DataGridColumnEventArgs(column));
114103
}
115104

116105
private void DataGridColumnVisibility_Changed([NotNull] object source, [NotNull] EventArgs e)
117106
{
118-
Contract.Requires(source != null);
119-
120107
OnColumnVisibilityChanged((DataGridColumn)source);
121108
}
122109

123110
private void DataGridColumnActualWidth_Changed([NotNull] object source, [NotNull] EventArgs e)
124111
{
125-
Contract.Requires(source != null);
126-
127112
OnColumnActualWidthChanged((DataGridColumn)source);
128113
}
129114
private void DataGridColumnDisplayIndex_Changed([NotNull] object source, [NotNull] EventArgs e)
130115
{
131-
Contract.Requires(source != null);
132-
133116
OnColumnDisplayIndexChanged((DataGridColumn)source);
134117
}
135118
}

0 commit comments

Comments
 (0)