Skip to content

Commit 18d1cc7

Browse files
committed
DP tweaks
1 parent 5d0e923 commit 18d1cc7

File tree

2 files changed

+30
-7
lines changed

2 files changed

+30
-7
lines changed

Rubberduck.Core/UI/Controls/NumberPicker.xaml.cs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.ComponentModel;
33
using System.Windows;
4+
using Rubberduck.Settings;
45

56
// credit to http://stackoverflow.com/a/2752538
67
namespace Rubberduck.UI.Controls
@@ -11,19 +12,40 @@ namespace Rubberduck.UI.Controls
1112
public partial class NumberPicker : IDataErrorInfo
1213
{
1314
public static readonly DependencyProperty NumValueProperty =
14-
DependencyProperty.Register("NumValue", typeof(int), typeof(NumberPicker), new UIPropertyMetadata(null));
15+
DependencyProperty.Register(nameof(NumValue), typeof(int), typeof(NumberPicker), new UIPropertyMetadata(default(int), PropertyChangedCallback));
1516
public static readonly DependencyProperty MinNumberProperty =
16-
DependencyProperty.Register("MinNumber", typeof(int), typeof(NumberPicker), new UIPropertyMetadata(null));
17+
DependencyProperty.Register(nameof(MinNumber), typeof(int), typeof(NumberPicker), new UIPropertyMetadata(default(int), PropertyChangedCallback));
1718
public static readonly DependencyProperty MaxNumberProperty =
18-
DependencyProperty.Register("MaxNumber", typeof(int), typeof(NumberPicker), new UIPropertyMetadata(null));
19+
DependencyProperty.Register(nameof(MaxNumber), typeof(int), typeof(NumberPicker), new UIPropertyMetadata(default(int), PropertyChangedCallback));
20+
21+
private static void PropertyChangedCallback(DependencyObject source, DependencyPropertyChangedEventArgs args)
22+
{
23+
if (source is NumberPicker control)
24+
{
25+
var newValue = (int) args.NewValue;
26+
switch (args.Property.Name)
27+
{
28+
case "NumValue":
29+
control.NumValue = newValue;
30+
break;
31+
case "MinNumber":
32+
control.MinNumber = newValue;
33+
break;
34+
case "MaxNumber":
35+
control.MaxNumber = newValue;
36+
break;
37+
}
38+
}
39+
}
1940

2041
public int NumValue
2142
{
2243
get => (int)GetValue(NumValueProperty);
2344
set
2445
{
46+
var old = GetValue(MinNumberProperty);
2547
SetValue(NumValueProperty, value);
26-
OnPropertyChanged(new DependencyPropertyChangedEventArgs(NumValueProperty, NumValue - 1, NumValue));
48+
OnPropertyChanged(new DependencyPropertyChangedEventArgs(NumValueProperty, old, value));
2749
}
2850
}
2951

Rubberduck.Core/UI/Settings/AutoCompleteSettings.xaml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,11 @@
113113

114114
<Label Margin="15,0,15,0" Content="{Resx ResxName=Rubberduck.Resources.Settings.AutoCompletesPage, Key=MaxConcatLines}" />
115115
<controls:NumberPicker Margin="15,0,15,0"
116-
NumValue="{Binding ConcatMaxLines}"
116+
NumValue="{Binding ConcatMaxLines, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
117117
MinNumber="{Binding ConcatMaxLinesMinValue}"
118-
MaxNumber="{Binding ConcatMaxLinesMaxValue}"/>
119-
118+
MaxNumber="{Binding ConcatMaxLinesMaxValue}">
119+
120+
</controls:NumberPicker>
120121
<Label Margin="10"
121122
Content="{Resx ResxName=Rubberduck.Resources.Settings.AutoCompletesPage, Key=BlockCompletion}"
122123
FontWeight="Bold" />

0 commit comments

Comments
 (0)