Browse Source

Removed this.

pull/131/head
Nikita Tsukanov 11 years ago
parent
commit
01e2c90bc5
  1. 2
      Tests/Perspex.Markup.Xaml.UnitTests/SampleModel/LogInViewModel.cs
  2. 8
      Tests/Perspex.Markup.Xaml.UnitTests/SampleModel/MainWindowViewModel.cs
  3. 2
      Tests/Perspex.Markup.Xaml.UnitTests/SampleModel/UserRepositoriesViewModel.cs
  4. 4
      Tests/Perspex.Markup.Xaml.UnitTests/SamplePerspexObject.cs
  5. 6
      samples/TestApplication/App.cs
  6. 16
      samples/TestApplication/Program.cs
  7. 6
      samples/XamlTestApplication/App.cs
  8. 2
      samples/XamlTestApplication/Program.cs
  9. 2
      samples/XamlTestApplication/Views/MainWindow.cs
  10. 2
      src/Gtk/Perspex.Cairo/CairoPlatform.cs
  11. 30
      src/Gtk/Perspex.Cairo/Media/DrawingContext.cs
  12. 24
      src/Gtk/Perspex.Cairo/Media/FormattedTextImpl.cs
  13. 12
      src/Gtk/Perspex.Cairo/Media/Imaging/BitmapImpl.cs
  14. 4
      src/Gtk/Perspex.Cairo/Media/Imaging/RenderTargetBitmapImpl.cs
  15. 2
      src/Gtk/Perspex.Cairo/Media/StreamGeometryContextImpl.cs
  16. 10
      src/Gtk/Perspex.Cairo/Media/StreamGeometryImpl.cs
  17. 2
      src/Gtk/Perspex.Gtk/ClipboardImpl.cs
  18. 2
      src/Gtk/Perspex.Gtk/CursorFactory.cs
  19. 8
      src/Gtk/Perspex.Gtk/Input/GtkKeyboardDevice.cs
  20. 2
      src/Gtk/Perspex.Gtk/PopupImpl.cs
  21. 54
      src/Gtk/Perspex.Gtk/WindowImpl.cs
  22. 8
      src/Markup/Perspex.Markup.Xaml/Context/PerspexParserFactory.cs
  23. 2
      src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeRepository.cs
  24. 18
      src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlMemberValuePlugin.cs
  25. 2
      src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlType.cs
  26. 14
      src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/ObservablePropertyBranch.cs
  27. 12
      src/Markup/Perspex.Markup.Xaml/DataBinding/DataContextChangeSynchronizer.cs
  28. 8
      src/Markup/Perspex.Markup.Xaml/DataBinding/SourceBindingEndpoint.cs
  29. 4
      src/Markup/Perspex.Markup.Xaml/DataBinding/TargetBindingEndpoint.cs
  30. 10
      src/Markup/Perspex.Markup.Xaml/DataBinding/XamlBinding.cs
  31. 6
      src/Markup/Perspex.Markup.Xaml/MarkupExtensions/BindingExtension.cs
  32. 8
      src/Markup/Perspex.Markup.Xaml/MarkupExtensions/TypeExtension.cs
  33. 4
      src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs
  34. 10
      src/Markup/Perspex.Markup.Xaml/Templates/XamlDataTemplate.cs
  35. 8
      src/Perspex.Animation/Animate.cs
  36. 2
      src/Perspex.Animation/LinearDoubleEasing.cs
  37. 6
      src/Perspex.Animation/PropertyTransition.cs
  38. 16
      src/Perspex.Application/Application.cs
  39. 8
      src/Perspex.Base/BindingDescriptor.cs
  40. 46
      src/Perspex.Base/Collections/PerspexDictionary.cs
  41. 52
      src/Perspex.Base/Collections/PerspexList.cs
  42. 8
      src/Perspex.Base/Diagnostics/PerspexPropertyValue.cs
  43. 104
      src/Perspex.Base/PerspexObject.cs
  44. 24
      src/Perspex.Base/PerspexProperty.cs
  45. 10
      src/Perspex.Base/PerspexPropertyChangedEventArgs.cs
  46. 4
      src/Perspex.Base/PerspexProperty`1.cs
  47. 4
      src/Perspex.Base/Platform/PlatformHandle.cs
  48. 10
      src/Perspex.Base/PriorityBindingEntry.cs
  49. 44
      src/Perspex.Base/PriorityLevel.cs
  50. 24
      src/Perspex.Base/PriorityValue.cs
  51. 2
      src/Perspex.Base/Reactive/PerspexObservable.cs
  52. 42
      src/Perspex.Base/Threading/DispatcherTimer.cs
  53. 10
      src/Perspex.Base/Threading/MainLoop.cs
  54. 38
      src/Perspex.Controls/Border.cs
  55. 66
      src/Perspex.Controls/Button.cs
  56. 16
      src/Perspex.Controls/ColumnDefinition.cs
  57. 2
      src/Perspex.Controls/ColumnDefinitions.cs
  58. 16
      src/Perspex.Controls/ContentControl.cs
  59. 40
      src/Perspex.Controls/Control.cs
  60. 4
      src/Perspex.Controls/Deck.cs
  61. 24
      src/Perspex.Controls/Decorator.cs
  62. 4
      src/Perspex.Controls/DefinitionBase.cs
  63. 44
      src/Perspex.Controls/DropDown.cs
  64. 8
      src/Perspex.Controls/Generators/ItemContainerGenerator.cs
  65. 2
      src/Perspex.Controls/Generators/ItemContainerGenerator`1.cs
  66. 4
      src/Perspex.Controls/Generators/ItemContainers.cs
  67. 12
      src/Perspex.Controls/Generators/TreeItemContainerGenerator.cs
  68. 114
      src/Perspex.Controls/Grid.cs
  69. 6
      src/Perspex.Controls/GridLength.cs
  70. 4
      src/Perspex.Controls/GridSplitter.cs
  71. 30
      src/Perspex.Controls/Image.cs
  72. 30
      src/Perspex.Controls/ItemsControl.cs
  73. 4
      src/Perspex.Controls/ListBoxItem.cs
  74. 42
      src/Perspex.Controls/Menu.cs
  75. 116
      src/Perspex.Controls/MenuItem.cs
  76. 2
      src/Perspex.Controls/MenuItemAccessKeyHandler.cs
  77. 30
      src/Perspex.Controls/Panel.cs
  78. 26
      src/Perspex.Controls/Presenters/ContentPresenter.cs
  79. 48
      src/Perspex.Controls/Presenters/DeckPresenter.cs
  80. 60
      src/Perspex.Controls/Presenters/ItemsPresenter.cs
  81. 50
      src/Perspex.Controls/Presenters/ScrollContentPresenter.cs
  82. 60
      src/Perspex.Controls/Presenters/TextPresenter.cs
  83. 38
      src/Perspex.Controls/Primitives/AccessText.cs
  84. 12
      src/Perspex.Controls/Primitives/AdornerDecorator.cs
  85. 12
      src/Perspex.Controls/Primitives/AdornerLayer.cs
  86. 4
      src/Perspex.Controls/Primitives/HeaderedContentControl.cs
  87. 4
      src/Perspex.Controls/Primitives/HeaderedItemsControl.cs
  88. 76
      src/Perspex.Controls/Primitives/Popup.cs
  89. 28
      src/Perspex.Controls/Primitives/PopupRoot.cs
  90. 12
      src/Perspex.Controls/Primitives/RangeBase.cs
  91. 30
      src/Perspex.Controls/Primitives/ScrollBar.cs
  92. 78
      src/Perspex.Controls/Primitives/SelectingItemsControl.cs
  93. 10
      src/Perspex.Controls/Primitives/TabStrip.cs
  94. 56
      src/Perspex.Controls/Primitives/TemplatedControl.cs
  95. 18
      src/Perspex.Controls/Primitives/Thumb.cs
  96. 10
      src/Perspex.Controls/Primitives/ToggleButton.cs
  97. 78
      src/Perspex.Controls/Primitives/Track.cs
  98. 4
      src/Perspex.Controls/ProgressBar.cs
  99. 6
      src/Perspex.Controls/RadioButton.cs
  100. 16
      src/Perspex.Controls/RowDefinition.cs

2
Tests/Perspex.Markup.Xaml.UnitTests/SampleModel/LogInViewModel.cs

@ -11,7 +11,7 @@ namespace Perspex.Xaml.Base.UnitTest.SampleModel
public LogInViewModel()
{
this.OkCommand = ReactiveCommand.Create(
OkCommand = ReactiveCommand.Create(
this.WhenAnyValue(
x => x.Username,
x => !string.IsNullOrWhiteSpace(x)));

8
Tests/Perspex.Markup.Xaml.UnitTests/SampleModel/MainWindowViewModel.cs

@ -15,7 +15,7 @@ namespace GitHubClient.ViewModels
public MainWindowViewModel()
{
this.ShowLogin();
ShowLogin();
}
public object Content
@ -27,15 +27,15 @@ namespace GitHubClient.ViewModels
private void ShowLogin()
{
_login = new LogInViewModel();
_login.OkCommand.Subscribe(_ => this.ShowRepositories());
this.Content = _login;
_login.OkCommand.Subscribe(_ => ShowRepositories());
Content = _login;
}
private void ShowRepositories()
{
var vm = new UserRepositoriesViewModel();
var task = vm.Load(_login.Username);
this.Content = vm;
Content = vm;
}
}
}

2
Tests/Perspex.Markup.Xaml.UnitTests/SampleModel/UserRepositoriesViewModel.cs

@ -14,7 +14,7 @@ namespace Perspex.Xaml.Base.UnitTest.SampleModel
public async Task Load(string username)
{
this.Repositories = await new Task<IReadOnlyList<Repository>>(() => new List<Repository> { new Repository("Blah"), new Repository("Bleh") });
Repositories = await new Task<IReadOnlyList<Repository>>(() => new List<Repository> { new Repository("Blah"), new Repository("Bleh") });
}
public IReadOnlyList<Repository> Repositories

4
Tests/Perspex.Markup.Xaml.UnitTests/SamplePerspexObject.cs

@ -16,13 +16,13 @@ namespace Perspex.Xaml.Base.UnitTest
public int Int
{
get { return GetValue(IntProperty); }
set { this.SetValue(IntProperty, value); }
set { SetValue(IntProperty, value); }
}
public string String
{
get { return GetValue(StringProperty); }
set { this.SetValue(StringProperty, value); }
set { SetValue(StringProperty, value); }
}
}
}

6
samples/TestApplication/App.cs

@ -11,9 +11,9 @@ namespace TestApplication
{
public App()
{
this.RegisterServices();
this.InitializeSubsystems((int)Environment.OSVersion.Platform);
this.Styles = new DefaultTheme();
RegisterServices();
InitializeSubsystems((int)Environment.OSVersion.Platform);
Styles = new DefaultTheme();
}
}
}

16
samples/TestApplication/Program.cs

@ -31,7 +31,7 @@ namespace TestApplication
{
public Node()
{
this.Children = new PerspexList<Node>();
Children = new PerspexList<Node>();
}
public string Name { get; set; }
@ -446,15 +446,15 @@ namespace TestApplication
Content = new Image
{
Source = new Bitmap("github_icon.png"),
[!Image.WidthProperty] = size[!ScrollBar.ValueProperty],
[!Image.HeightProperty] = size[!ScrollBar.ValueProperty],
[!Layoutable.WidthProperty] = size[!RangeBase.ValueProperty],
[!Layoutable.HeightProperty] = size[!RangeBase.ValueProperty],
},
},
new ProgressBar
{
[!ProgressBar.MinimumProperty] = size[!ScrollBar.MinimumProperty],
[!ProgressBar.MaximumProperty] = size[!ScrollBar.MaximumProperty],
[!ProgressBar.ValueProperty] = size[!ScrollBar.ValueProperty],
[!RangeBase.MinimumProperty] = size[!RangeBase.MinimumProperty],
[!RangeBase.MaximumProperty] = size[!RangeBase.MaximumProperty],
[!RangeBase.ValueProperty] = size[!RangeBase.ValueProperty],
}
}
},
@ -617,8 +617,8 @@ namespace TestApplication
}),
PropertyTransitions = new PropertyTransitions
{
Rectangle.WidthProperty.Transition(300),
Rectangle.HeightProperty.Transition(1000),
Layoutable.WidthProperty.Transition(300),
Layoutable.HeightProperty.Transition(1000),
},
[Grid.ColumnProperty] = 1,
}),

6
samples/XamlTestApplication/App.cs

@ -11,9 +11,9 @@ namespace XamlTestApplication
{
public App()
{
this.RegisterServices();
this.InitializeSubsystems((int)Environment.OSVersion.Platform);
this.Styles = new DefaultTheme();
RegisterServices();
InitializeSubsystems((int)Environment.OSVersion.Platform);
Styles = new DefaultTheme();
}
}
}

2
samples/XamlTestApplication/Program.cs

@ -23,7 +23,7 @@ namespace XamlTestApplication
{
public Node()
{
this.Children = new PerspexList<Node>();
Children = new PerspexList<Node>();
}
public string Name { get; set; }

2
samples/XamlTestApplication/Views/MainWindow.cs

@ -17,7 +17,7 @@ namespace XamlTestApplication.Views
{
public MainWindow()
{
this.InitializeComponent();
InitializeComponent();
DevTools.Attach(this);
}

2
src/Gtk/Perspex.Cairo/CairoPlatform.cs

@ -40,7 +40,7 @@ namespace Perspex.Cairo
public IRenderer CreateRenderer(IPlatformHandle handle, double width, double height)
{
Locator.CurrentMutable.RegisterConstant(this.GetPangoContext(handle), typeof(Pango.Context));
Locator.CurrentMutable.RegisterConstant(GetPangoContext(handle), typeof(Pango.Context));
return new Renderer(handle, width, height);
}

30
src/Gtk/Perspex.Cairo/Media/DrawingContext.cs

@ -28,7 +28,7 @@ namespace Perspex.Cairo.Media
public DrawingContext(Cairo.Surface surface)
{
_context = new Cairo.Context(surface);
this.CurrentTransform = Matrix.Identity;
CurrentTransform = Matrix.Identity;
}
/// <summary>
@ -38,14 +38,12 @@ namespace Perspex.Cairo.Media
public DrawingContext(Gdk.Drawable drawable)
{
_context = Gdk.CairoHelper.Create(drawable);
this.CurrentTransform = Matrix.Identity;
CurrentTransform = Matrix.Identity;
}
public Matrix CurrentTransform
{
get;
private set;
}
get; }
/// <summary>
/// Ends a draw operation.
@ -76,11 +74,11 @@ namespace Perspex.Cairo.Media
/// <param name="pen">The stroke pen.</param>
/// <param name="p1">The first point of the line.</param>
/// <param name="p1">The second point of the line.</param>
public void DrawLine(Pen pen, Perspex.Point p1, Perspex.Point p2)
public void DrawLine(Pen pen, Point p1, Point p2)
{
var size = new Rect(p1, p2).Size;
this.SetBrush(pen.Brush, size);
SetBrush(pen.Brush, size);
_context.LineWidth = pen.Thickness;
_context.MoveTo(p1.ToCairo());
_context.LineTo(p2.ToCairo());
@ -93,17 +91,17 @@ namespace Perspex.Cairo.Media
/// <param name="brush">The fill brush.</param>
/// <param name="pen">The stroke pen.</param>
/// <param name="geometry">The geometry.</param>
public void DrawGeometry(Perspex.Media.Brush brush, Perspex.Media.Pen pen, Perspex.Media.Geometry geometry)
public void DrawGeometry(Brush brush, Pen pen, Geometry geometry)
{
var impl = geometry.PlatformImpl as StreamGeometryImpl;
using (var pop = this.PushTransform(impl.Transform))
using (var pop = PushTransform(impl.Transform))
{
_context.AppendPath(impl.Path);
if (brush != null)
{
this.SetBrush(brush, geometry.Bounds.Size);
SetBrush(brush, geometry.Bounds.Size);
if (pen != null)
_context.FillPreserve();
@ -114,7 +112,7 @@ namespace Perspex.Cairo.Media
if (pen != null)
{
this.SetPen(pen, geometry.Bounds.Size);
SetPen(pen, geometry.Bounds.Size);
_context.Stroke();
}
}
@ -127,7 +125,7 @@ namespace Perspex.Cairo.Media
/// <param name="rect">The rectangle bounds.</param>
public void DrawRectange(Pen pen, Rect rect, float cornerRadius)
{
this.SetPen(pen, rect.Size);
SetPen(pen, rect.Size);
_context.Rectangle(rect.ToCairo());
_context.Stroke();
}
@ -141,7 +139,7 @@ namespace Perspex.Cairo.Media
public void DrawText(Brush foreground, Point origin, FormattedText text)
{
var layout = ((FormattedTextImpl)text.PlatformImpl).Layout;
this.SetBrush(foreground, new Size(0, 0));
SetBrush(foreground, new Size(0, 0));
_context.MoveTo(origin.X, origin.Y);
Pango.CairoHelper.ShowLayout(_context, layout);
@ -152,9 +150,9 @@ namespace Perspex.Cairo.Media
/// </summary>
/// <param name="brush">The brush.</param>
/// <param name="rect">The rectangle bounds.</param>
public void FillRectange(Perspex.Media.Brush brush, Rect rect, float cornerRadius)
public void FillRectange(Brush brush, Rect rect, float cornerRadius)
{
this.SetBrush(brush, rect.Size);
SetBrush(brush, rect.Size);
_context.Rectangle(rect.ToCairo());
_context.Fill();
}
@ -226,7 +224,7 @@ namespace Perspex.Cairo.Media
private void SetPen(Pen pen, Size destinationSize)
{
this.SetBrush(pen.Brush, destinationSize);
SetBrush(pen.Brush, destinationSize);
_context.LineWidth = pen.Thickness;
}
}

24
src/Gtk/Perspex.Cairo/Media/FormattedTextImpl.cs

@ -21,9 +21,9 @@ namespace Perspex.Cairo.Media
FontWeight fontWeight)
{
var context = Locator.Current.GetService<Pango.Context>();
this.Layout = new Pango.Layout(context);
this.Layout.SetText(text);
this.Layout.FontDescription = new Pango.FontDescription
Layout = new Pango.Layout(context);
Layout.SetText(text);
Layout.FontDescription = new Pango.FontDescription
{
Family = fontFamily,
Size = Pango.Units.FromDouble(fontSize * 0.73),
@ -31,7 +31,7 @@ namespace Perspex.Cairo.Media
Weight = fontWeight.ToCairo()
};
this.Layout.Alignment = textAlignment.ToCairo();
Layout.Alignment = textAlignment.ToCairo();
}
private Size _size;
@ -45,19 +45,17 @@ namespace Perspex.Cairo.Media
set
{
_size = value;
this.Layout.Width = Pango.Units.FromDouble(value.Width);
Layout.Width = Pango.Units.FromDouble(value.Width);
}
}
public Pango.Layout Layout
{
get;
private set;
}
get; }
public void Dispose()
{
this.Layout.Dispose();
Layout.Dispose();
}
public IEnumerable<FormattedTextLine> GetLines()
@ -70,7 +68,7 @@ namespace Perspex.Cairo.Media
int textPosition;
int trailing;
var isInside = this.Layout.XyToIndex(
var isInside = Layout.XyToIndex(
Pango.Units.FromDouble(point.X),
Pango.Units.FromDouble(point.Y),
out textPosition,
@ -86,7 +84,7 @@ namespace Perspex.Cairo.Media
public Rect HitTestTextPosition(int index)
{
return this.Layout.IndexToPos(index).ToPerspex();
return Layout.IndexToPos(index).ToPerspex();
}
public IEnumerable<Rect> HitTestTextRange(int index, int length)
@ -95,7 +93,7 @@ namespace Perspex.Cairo.Media
for (var i = 0; i < length; i++)
{
ranges.Add(this.HitTestTextPosition(index + i));
ranges.Add(HitTestTextPosition(index + i));
}
return ranges;
@ -105,7 +103,7 @@ namespace Perspex.Cairo.Media
{
int width;
int height;
this.Layout.GetPixelSize(out width, out height);
Layout.GetPixelSize(out width, out height);
return new Size(width, height);
}

12
src/Gtk/Perspex.Cairo/Media/Imaging/BitmapImpl.cs

@ -12,28 +12,26 @@ namespace Perspex.Cairo.Media.Imaging
{
public BitmapImpl(Cairo.ImageSurface surface)
{
this.Surface = surface;
Surface = surface;
}
public int PixelWidth
{
get { return this.Surface.Width; }
get { return Surface.Width; }
}
public int PixelHeight
{
get { return this.Surface.Height; }
get { return Surface.Height; }
}
public Cairo.ImageSurface Surface
{
get;
private set;
}
get; }
public void Save(string fileName)
{
this.Surface.WriteToPng(fileName);
Surface.WriteToPng(fileName);
}
}
}

4
src/Gtk/Perspex.Cairo/Media/Imaging/RenderTargetBitmapImpl.cs

@ -18,12 +18,12 @@ namespace Perspex.Cairo.Media.Imaging
public void Dispose()
{
this.Surface.Dispose();
Surface.Dispose();
}
public void Render(IVisual visual)
{
Renderer renderer = new Renderer(this.Surface);
Renderer renderer = new Renderer(Surface);
renderer.Render(visual, new PlatformHandle(IntPtr.Zero, "RTB"));
}
}

2
src/Gtk/Perspex.Cairo/Media/StreamGeometryContextImpl.cs

@ -16,7 +16,7 @@ namespace Perspex.Cairo.Media
public StreamGeometryContextImpl(StreamGeometryImpl imp)
{
_impl = imp;
_surf = new Cairo.ImageSurface(global::Cairo.Format.Argb32, 0, 0);
_surf = new Cairo.ImageSurface(Cairo.Format.Argb32, 0, 0);
_context = new Cairo.Context(_surf);
}

10
src/Gtk/Perspex.Cairo/Media/StreamGeometryImpl.cs

@ -21,10 +21,10 @@ namespace Perspex.Cairo.Media
public StreamGeometryImpl(Cairo.Path path)
{
_impl = new StreamGeometryContextImpl(this);
this.Path = path;
Path = path;
}
public global::Cairo.Path Path
public Cairo.Path Path
{
get;
set;
@ -44,7 +44,7 @@ namespace Perspex.Cairo.Media
get { return _transform; }
set
{
if (value != this.Transform)
if (value != Transform)
{
if (!value.IsIdentity)
{
@ -56,12 +56,12 @@ namespace Perspex.Cairo.Media
public IStreamGeometryImpl Clone()
{
return new StreamGeometryImpl(this.Path);
return new StreamGeometryImpl(Path);
}
public Rect GetRenderBounds(double strokeThickness)
{
return this.Bounds;
return Bounds;
}
public IStreamGeometryContextImpl Open()

2
src/Gtk/Perspex.Gtk/ClipboardImpl.cs

@ -12,7 +12,7 @@ namespace Perspex.Gtk
internal class ClipboardImpl : IClipboard
{
private static Gtk.Clipboard GetClipboard() => Gtk.Clipboard.GetForDisplay(Gdk.Display.Default, new Atom(IntPtr.Zero));
private static Gtk.Clipboard GetClipboard() => Gtk.Clipboard.GetForDisplay(Display.Default, new Atom(IntPtr.Zero));
public Task<string> GetTextAsync()
{

2
src/Gtk/Perspex.Gtk/CursorFactory.cs

@ -48,7 +48,7 @@ namespace Perspex.Gtk
{
var theme = Gtk.IconTheme.Default;
var icon = theme.LoadIcon(name, 32, default(Gtk.IconLookupFlags));
rv = icon == null ? new Gdk.Cursor(CursorType.XCursor) : new Gdk.Cursor(Gdk.Display.Default, icon, 0, 0);
rv = icon == null ? new Gdk.Cursor(CursorType.XCursor) : new Gdk.Cursor(Display.Default, icon, 0, 0);
}
else
{

8
src/Gtk/Perspex.Gtk/Input/GtkKeyboardDevice.cs

@ -34,19 +34,19 @@ namespace Perspex.Gtk
get { return s_instance; }
}
public static Perspex.Input.Key ConvertKey(Gdk.Key key)
public static Key ConvertKey(Gdk.Key key)
{
// TODO: Don't use reflection for this! My eyes!!!
if (key == Gdk.Key.BackSpace)
{
return Perspex.Input.Key.Back;
return Key.Back;
}
else
{
string s;
if (!s_nameDic.TryGetValue(key, out s))
s = "Unknown";
Perspex.Input.Key result;
Key result;
if (Enum.TryParse(s, true, out result))
{
@ -54,7 +54,7 @@ namespace Perspex.Gtk
}
else
{
return Perspex.Input.Key.None;
return Key.None;
}
}
}

2
src/Gtk/Perspex.Gtk/PopupImpl.cs

@ -15,7 +15,7 @@ namespace Perspex.Gtk
public void SetPosition(Point p)
{
this.Move((int)p.X, (int)p.Y);
Move((int)p.X, (int)p.Y);
}
}
}

54
src/Gtk/Perspex.Gtk/WindowImpl.cs

@ -31,7 +31,7 @@ namespace Perspex.Gtk
public WindowImpl()
: base(Gtk.WindowType.Toplevel)
{
this.DefaultSize = new Gdk.Size(640, 480);
DefaultSize = new Gdk.Size(640, 480);
Init();
}
@ -43,10 +43,10 @@ namespace Perspex.Gtk
private void Init()
{
this.Events = Gdk.EventMask.PointerMotionMask |
Gdk.EventMask.ButtonPressMask |
Gdk.EventMask.ButtonReleaseMask;
_windowHandle = new PlatformHandle(this.Handle, "GtkWindow");
Events = EventMask.PointerMotionMask |
EventMask.ButtonPressMask |
EventMask.ButtonReleaseMask;
_windowHandle = new PlatformHandle(Handle, "GtkWindow");
_imContext = new Gtk.IMMulticontext();
_imContext.Commit += ImContext_Commit;
}
@ -82,14 +82,14 @@ namespace Perspex.Gtk
public void Invalidate(Rect rect)
{
#pragma warning disable CS0612 // Type or member is obsolete
this.Draw(new Gdk.Rectangle { X = (int)rect.X, Y = (int)rect.Y, Width = (int)rect.Width, Height = (int)rect.Height });
Draw(new Rectangle { X = (int)rect.X, Y = (int)rect.Y, Width = (int)rect.Width, Height = (int)rect.Height });
#pragma warning restore CS0612 // Type or member is obsolete
}
public Point PointToScreen(Point point)
{
int x, y;
this.GdkWindow.GetDeskrelativeOrigin(out x, out y);
GdkWindow.GetDeskrelativeOrigin(out x, out y);
return new Point(point.X + x, point.Y + y);
}
@ -101,7 +101,7 @@ namespace Perspex.Gtk
public void SetTitle(string title)
{
this.Title = title;
Title = title;
}
@ -112,15 +112,15 @@ namespace Perspex.Gtk
public IDisposable ShowDialog()
{
this.Modal = true;
this.Show();
Modal = true;
Show();
return Disposable.Empty;
}
void ITopLevelImpl.Activate()
{
this.Activate();
Activate();
}
private static ModifierKeys GetModifierKeys(ModifierType state)
@ -136,7 +136,7 @@ namespace Perspex.Gtk
return rv;
}
protected override bool OnButtonPressEvent(Gdk.EventButton evnt)
protected override bool OnButtonPressEvent(EventButton evnt)
{
var e = new RawMouseEventArgs(
GtkMouseDevice.Instance,
@ -144,11 +144,11 @@ namespace Perspex.Gtk
_owner,
RawMouseEventType.LeftButtonDown,
new Point(evnt.X, evnt.Y), GetModifierKeys(evnt.State));
this.Input(e);
Input(e);
return true;
}
protected override bool OnButtonReleaseEvent(Gdk.EventButton evnt)
protected override bool OnButtonReleaseEvent(EventButton evnt)
{
var e = new RawMouseEventArgs(
GtkMouseDevice.Instance,
@ -156,17 +156,17 @@ namespace Perspex.Gtk
_owner,
RawMouseEventType.LeftButtonUp,
new Point(evnt.X, evnt.Y), GetModifierKeys(evnt.State));
this.Input(e);
Input(e);
return true;
}
protected override bool OnConfigureEvent(Gdk.EventConfigure evnt)
protected override bool OnConfigureEvent(EventConfigure evnt)
{
var newSize = new Size(evnt.Width, evnt.Height);
if (newSize != _clientSize)
{
this.Resized(newSize);
Resized(newSize);
}
return true;
@ -174,10 +174,10 @@ namespace Perspex.Gtk
protected override void OnDestroyed()
{
this.Closed();
Closed();
}
private bool ProcessKeyEvent(Gdk.EventKey evnt)
private bool ProcessKeyEvent(EventKey evnt)
{
_lastKeyEventTimestamp = evnt.Time;
if (_imContext.FilterKeypress(evnt))
@ -187,31 +187,31 @@ namespace Perspex.Gtk
evnt.Time,
evnt.Type == EventType.KeyPress ? RawKeyEventType.KeyDown : RawKeyEventType.KeyUp,
GtkKeyboardDevice.ConvertKey(evnt.Key), GetModifierKeys(evnt.State));
this.Input(e);
Input(e);
return true;
}
protected override bool OnKeyPressEvent(Gdk.EventKey evnt) => ProcessKeyEvent(evnt);
protected override bool OnKeyPressEvent(EventKey evnt) => ProcessKeyEvent(evnt);
protected override bool OnKeyReleaseEvent(EventKey evnt) => ProcessKeyEvent(evnt);
private void ImContext_Commit(object o, Gtk.CommitArgs args)
{
this.Input(new RawTextInputEventArgs(GtkKeyboardDevice.Instance, _lastKeyEventTimestamp, args.Str));
Input(new RawTextInputEventArgs(GtkKeyboardDevice.Instance, _lastKeyEventTimestamp, args.Str));
}
protected override bool OnExposeEvent(Gdk.EventExpose evnt)
protected override bool OnExposeEvent(EventExpose evnt)
{
this.Paint(evnt.Area.ToPerspex(), this.GetHandle(evnt.Window));
Paint(evnt.Area.ToPerspex(), GetHandle(evnt.Window));
return true;
}
protected override void OnFocusActivated()
{
this.Activated();
Activated();
}
protected override bool OnMotionNotifyEvent(Gdk.EventMotion evnt)
protected override bool OnMotionNotifyEvent(EventMotion evnt)
{
var position = new Point(evnt.X, evnt.Y);
@ -223,7 +223,7 @@ namespace Perspex.Gtk
_owner,
RawMouseEventType.Move,
position, GetModifierKeys(evnt.State));
this.Input(e);
Input(e);
return true;
}

8
src/Markup/Perspex.Markup.Xaml/Context/PerspexParserFactory.cs

@ -24,9 +24,9 @@ namespace Perspex.Markup.Xaml.Context
public IXamlParser CreateForReadingFree()
{
var objectAssemblerForUndefinedRoot = this.GetObjectAssemblerForUndefinedRoot();
var objectAssemblerForUndefinedRoot = GetObjectAssemblerForUndefinedRoot();
return this.CreateParser(objectAssemblerForUndefinedRoot);
return CreateParser(objectAssemblerForUndefinedRoot);
}
private IXamlParser CreateParser(IObjectAssembler objectAssemblerForUndefinedRoot)
@ -48,9 +48,9 @@ namespace Perspex.Markup.Xaml.Context
public IXamlParser CreateForReadingSpecificInstance(object rootInstance)
{
var objectAssemblerForUndefinedRoot = this.GetObjectAssemblerForSpecificRoot(rootInstance);
var objectAssemblerForUndefinedRoot = GetObjectAssemblerForSpecificRoot(rootInstance);
return this.CreateParser(objectAssemblerForUndefinedRoot);
return CreateParser(objectAssemblerForUndefinedRoot);
}
private IObjectAssembler GetObjectAssemblerForSpecificRoot(object rootInstance)

2
src/Markup/Perspex.Markup.Xaml/Context/PerspexTypeRepository.cs

@ -26,7 +26,7 @@ namespace Perspex.Markup.Xaml.Context
public override XamlType GetXamlType(Type type)
{
Guard.ThrowIfNull(type, nameof(type));
return new PerspexXamlType(type, this, _typeFactory, this.FeatureProvider, _propertyBinder);
return new PerspexXamlType(type, this, _typeFactory, FeatureProvider, _propertyBinder);
}
}
}

18
src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlMemberValuePlugin.cs

@ -23,9 +23,9 @@ namespace Perspex.Markup.Xaml.Context
public override void SetValue(object instance, object value)
{
if (this.ValueRequiresSpecialHandling(value))
if (ValueRequiresSpecialHandling(value))
{
this.HandleSpecialValue(instance, value);
HandleSpecialValue(instance, value);
}
else
{
@ -38,11 +38,11 @@ namespace Perspex.Markup.Xaml.Context
var definition = value as XamlBindingDefinition;
if (definition != null)
{
this.HandleXamlBindingDefinition(definition);
HandleXamlBindingDefinition(definition);
}
else if (this.IsPerspexProperty)
else if (IsPerspexProperty)
{
this.HandlePerspexProperty(instance, value);
HandlePerspexProperty(instance, value);
}
else
{
@ -52,7 +52,7 @@ namespace Perspex.Markup.Xaml.Context
private void HandlePerspexProperty(object instance, object value)
{
var pp = this.PerspexProperty;
var pp = PerspexProperty;
var po = (PerspexObject)instance;
po.SetValue(pp, value);
}
@ -63,7 +63,7 @@ namespace Perspex.Markup.Xaml.Context
_propertyBinder.Create(xamlBindingDefinition);
var observableForDataContext = subjectObject.GetObservable(Control.DataContextProperty);
observableForDataContext.Where(o => o != null).Subscribe(_ => this.BindToDataContextWhenItsSet(xamlBindingDefinition));
observableForDataContext.Where(o => o != null).Subscribe(_ => BindToDataContextWhenItsSet(xamlBindingDefinition));
}
private void BindToDataContextWhenItsSet(XamlBindingDefinition definition)
@ -90,10 +90,10 @@ namespace Perspex.Markup.Xaml.Context
private bool ValueRequiresSpecialHandling(object value)
{
return value is XamlBindingDefinition || this.IsPerspexProperty;
return value is XamlBindingDefinition || IsPerspexProperty;
}
private bool IsPerspexProperty => this.PerspexProperty != null;
private bool IsPerspexProperty => PerspexProperty != null;
public override string ToString()
{

2
src/Markup/Perspex.Markup.Xaml/Context/PerspexXamlType.cs

@ -25,7 +25,7 @@ namespace Perspex.Markup.Xaml.Context
protected override XamlMember LookupMember(string name)
{
return new PerspexXamlMember(name, this, this.TypeRepository, this.FeatureProvider, _propertyBinder);
return new PerspexXamlMember(name, this, TypeRepository, FeatureProvider, _propertyBinder);
}
public override string ToString()

14
src/Markup/Perspex.Markup.Xaml/DataBinding/ChangeTracking/ObservablePropertyBranch.cs

@ -25,15 +25,15 @@ namespace Perspex.Markup.Xaml.DataBinding.ChangeTracking
_instance = instance;
_propertyPath = propertyPath;
_mountPoint = new PropertyMountPoint(instance, propertyPath);
var properties = this.GetPropertiesThatRaiseNotifications();
this.Values = this.CreateUnifiedObservableFromNodes(properties);
var properties = GetPropertiesThatRaiseNotifications();
Values = CreateUnifiedObservableFromNodes(properties);
}
public IObservable<object> Values { get; private set; }
private IObservable<object> CreateUnifiedObservableFromNodes(IEnumerable<PropertyDefinition> subscriptions)
{
return subscriptions.Select(this.GetObservableFromProperty).Merge();
return subscriptions.Select(GetObservableFromProperty).Merge();
}
private IObservable<object> GetObservableFromProperty(PropertyDefinition subscription)
@ -47,7 +47,7 @@ namespace Perspex.Markup.Xaml.DataBinding.ChangeTracking
private IEnumerable<PropertyDefinition> GetPropertiesThatRaiseNotifications()
{
return this.GetSubscriptionsRecursive(_instance, _propertyPath, 0);
return GetSubscriptionsRecursive(_instance, _propertyPath, 0);
}
private IEnumerable<PropertyDefinition> GetSubscriptionsRecursive(object current, PropertyPath propertyPath, int i)
@ -71,7 +71,7 @@ namespace Perspex.Markup.Xaml.DataBinding.ChangeTracking
if (i < _propertyPath.Chunks.Length - 1)
{
subscriptions.AddRange(this.GetSubscriptionsRecursive(nextInstance, propertyPath, i + 1));
subscriptions.AddRange(GetSubscriptionsRecursive(nextInstance, propertyPath, i + 1));
}
}
@ -97,8 +97,8 @@ namespace Perspex.Markup.Xaml.DataBinding.ChangeTracking
{
public PropertyDefinition(INotifyPropertyChanged parent, string propertyName)
{
this.Parent = parent;
this.PropertyName = propertyName;
Parent = parent;
PropertyName = propertyName;
}
public INotifyPropertyChanged Parent { get; }

12
src/Markup/Perspex.Markup.Xaml/DataBinding/DataContextChangeSynchronizer.cs

@ -76,20 +76,20 @@ namespace Perspex.Markup.Xaml.DataBinding
_bindingTarget.Value = ConvertedValue(_sourceEndpoint.Value, _bindingTarget.Property.PropertyType);
// We use the native Bind method from PerspexObject to subscribe to the SourceValues observable
_bindingTarget.Object.Bind(_bindingTarget.Property, this.SourceValues);
_bindingTarget.Object.Bind(_bindingTarget.Property, SourceValues);
}
public void StartUpdatingSourceWhenTargetChanges()
{
// We subscribe to the TargetValues and each time we have a new value, we update the source with it
this.TargetValues.Subscribe(newValue => _sourceEndpoint.Value = newValue);
TargetValues.Subscribe(newValue => _sourceEndpoint.Value = newValue);
}
private IObservable<object> SourceValues
{
get
{
return _sourceEndpoint.Values.Select(originalValue => this.ConvertedValue(originalValue, _bindingTarget.Property.PropertyType));
return _sourceEndpoint.Values.Select(originalValue => ConvertedValue(originalValue, _bindingTarget.Property.PropertyType));
}
}
@ -98,7 +98,7 @@ namespace Perspex.Markup.Xaml.DataBinding
get
{
return _bindingEndpoint.Object
.GetObservable(_bindingEndpoint.Property).Select(o => this.ConvertedValue(o, _sourceEndpoint.Type));
.GetObservable(_bindingEndpoint.Property).Select(o => ConvertedValue(o, _sourceEndpoint.Type));
}
}
@ -116,7 +116,7 @@ namespace Perspex.Markup.Xaml.DataBinding
private object ConvertedValue(object originalValue, Type propertyType)
{
object converted;
if (this.TryConvert(originalValue, propertyType, out converted))
if (TryConvert(originalValue, propertyType, out converted))
{
return converted;
}
@ -128,7 +128,7 @@ namespace Perspex.Markup.Xaml.DataBinding
{
if (originalValue != null)
{
if (this.CanAssignWithoutConversion)
if (CanAssignWithoutConversion)
{
finalValue = originalValue;
return true;

8
src/Markup/Perspex.Markup.Xaml/DataBinding/SourceBindingEndpoint.cs

@ -18,10 +18,10 @@ namespace Perspex.Markup.Xaml.DataBinding
public SourceBindingEndpoint(INotifyPropertyChanged source, Type propertyType, dynamic propertyGetter, Delegate propertySetter)
{
this.Source = source;
this.PropertyType = propertyType;
this.PropertyGetter = propertyGetter;
this.PropertySetter = propertySetter;
Source = source;
PropertyType = propertyType;
PropertyGetter = propertyGetter;
PropertySetter = propertySetter;
}
}
}

4
src/Markup/Perspex.Markup.Xaml/DataBinding/TargetBindingEndpoint.cs

@ -11,8 +11,8 @@ namespace Perspex.Markup.Xaml.DataBinding
public TargetBindingEndpoint(PerspexObject obj, PerspexProperty property)
{
this.Object = obj;
this.Property = property;
Object = obj;
Property = property;
}
}
}

10
src/Markup/Perspex.Markup.Xaml/DataBinding/XamlBinding.cs

@ -35,23 +35,23 @@ namespace Perspex.Markup.Xaml.DataBinding
try
{
var bindingSource = new DataContextChangeSynchronizer.BindingSource(this.SourcePropertyPath, dataContext);
var bindingTarget = new DataContextChangeSynchronizer.BindingTarget(this.Target, this.TargetProperty);
var bindingSource = new DataContextChangeSynchronizer.BindingSource(SourcePropertyPath, dataContext);
var bindingTarget = new DataContextChangeSynchronizer.BindingTarget(Target, TargetProperty);
_changeSynchronizer = new DataContextChangeSynchronizer(bindingSource, bindingTarget, _typeConverterProvider);
if (this.BindingMode == BindingMode.TwoWay)
if (BindingMode == BindingMode.TwoWay)
{
_changeSynchronizer.StartUpdatingTargetWhenSourceChanges();
_changeSynchronizer.StartUpdatingSourceWhenTargetChanges();
}
if (this.BindingMode == BindingMode.OneWay)
if (BindingMode == BindingMode.OneWay)
{
_changeSynchronizer.StartUpdatingTargetWhenSourceChanges();
}
if (this.BindingMode == BindingMode.OneWayToSource)
if (BindingMode == BindingMode.OneWayToSource)
{
_changeSynchronizer.StartUpdatingSourceWhenTargetChanges();
}

6
src/Markup/Perspex.Markup.Xaml/MarkupExtensions/BindingExtension.cs

@ -17,7 +17,7 @@ namespace Perspex.Markup.Xaml.MarkupExtensions
public BindingExtension(string path)
{
this.Path = path;
Path = path;
}
public override object ProvideValue(MarkupExtensionContext extensionContext)
@ -31,8 +31,8 @@ namespace Perspex.Markup.Xaml.MarkupExtensions
(
target,
perspexProperty,
new PropertyPath(this.Path),
this.Mode == BindingMode.Default ? BindingMode.OneWay : this.Mode
new PropertyPath(Path),
Mode == BindingMode.Default ? BindingMode.OneWay : Mode
);
}

8
src/Markup/Perspex.Markup.Xaml/MarkupExtensions/TypeExtension.cs

@ -20,7 +20,7 @@ namespace Perspex.Markup.Xaml.MarkupExtensions
public TypeExtension(Type type)
{
this.Type = type;
Type = type;
}
public string TypeName { get; set; }
@ -37,12 +37,12 @@ namespace Perspex.Markup.Xaml.MarkupExtensions
public override object ProvideValue(MarkupExtensionContext markupExtensionContext)
{
if (this.Type != null)
if (Type != null)
{
return this.Type;
return Type;
}
return this.ResolveFromString(this.TypeName, markupExtensionContext.TypeRepository);
return ResolveFromString(TypeName, markupExtensionContext.TypeRepository);
}
}
}

4
src/Markup/Perspex.Markup.Xaml/PerspexXamlLoader.cs

@ -52,7 +52,7 @@ namespace Perspex.Markup.Xaml
/// <returns>The loaded object.</returns>
public object Load(Type type, object rootInstance = null)
{
return this.Load(GetUriFor(type), rootInstance);
return Load(GetUriFor(type), rootInstance);
}
/// <summary>
@ -75,7 +75,7 @@ namespace Perspex.Markup.Xaml
using (var stream = assetLocator.Open(uri))
{
return this.Load(stream, rootInstance);
return Load(stream, rootInstance);
}
}

10
src/Markup/Perspex.Markup.Xaml/Templates/XamlDataTemplate.cs

@ -13,17 +13,17 @@ namespace Perspex.Markup.Xaml.Templates
{
private bool MyMatch(object data)
{
if (this.DataType == null)
if (DataType == null)
{
throw new InvalidOperationException("XAML DataTemplates must have a DataType");
}
return this.DataType == data.GetType();
return DataType == data.GetType();
}
private Control CreateVisualTreeForItem(object data)
{
var visualTreeForItem = this.Content.Load();
var visualTreeForItem = Content.Load();
visualTreeForItem.DataContext = data;
return visualTreeForItem;
}
@ -34,12 +34,12 @@ namespace Perspex.Markup.Xaml.Templates
public IControl Build(object param)
{
return this.CreateVisualTreeForItem(param);
return CreateVisualTreeForItem(param);
}
public bool Match(object data)
{
return this.MyMatch(data);
return MyMatch(data);
}
}
}

8
src/Perspex.Animation/Animate.cs

@ -45,9 +45,7 @@ namespace Perspex.Animation
/// </value>
public static Stopwatch Stopwatch
{
get;
private set;
}
get; }
/// <summary>
/// Gets the animation timer.
@ -62,9 +60,7 @@ namespace Perspex.Animation
/// </value>
public static IObservable<TimeSpan> Timer
{
get;
private set;
}
get; }
/// <summary>
/// Gets a timer that fires every frame for the specified duration.

2
src/Perspex.Animation/LinearDoubleEasing.cs

@ -35,7 +35,7 @@ namespace Perspex.Animation
/// </returns>
object IEasing.Ease(double progress, object start, object finish)
{
return this.Ease(progress, (double)start, (double)finish);
return Ease(progress, (double)start, (double)finish);
}
}
}

6
src/Perspex.Animation/PropertyTransition.cs

@ -18,9 +18,9 @@ namespace Perspex.Animation
/// <param name="easing">The easing function to use.</param>
public PropertyTransition(PerspexProperty property, TimeSpan duration, IEasing easing)
{
this.Property = property;
this.Duration = duration;
this.Easing = easing;
Property = property;
Duration = duration;
Easing = easing;
}
/// <summary>

16
src/Perspex.Application/Application.cs

@ -154,14 +154,14 @@ namespace Perspex
protected virtual void RegisterServices()
{
PerspexSynchronizationContext.InstallIfNeeded();
this.FocusManager = new FocusManager();
this.InputManager = new InputManager();
FocusManager = new FocusManager();
InputManager = new InputManager();
Locator.CurrentMutable.Register(() => new AccessKeyHandler(), typeof(IAccessKeyHandler));
Locator.CurrentMutable.Register(() => this, typeof(IGlobalDataTemplates));
Locator.CurrentMutable.Register(() => this, typeof(IGlobalStyles));
Locator.CurrentMutable.Register(() => this.FocusManager, typeof(IFocusManager));
Locator.CurrentMutable.Register(() => this.InputManager, typeof(IInputManager));
Locator.CurrentMutable.Register(() => FocusManager, typeof(IFocusManager));
Locator.CurrentMutable.Register(() => InputManager, typeof(IInputManager));
Locator.CurrentMutable.Register(() => new KeyboardNavigationHandler(), typeof(IKeyboardNavigationHandler));
Locator.CurrentMutable.Register(() => _styler, typeof(IStyler));
Locator.CurrentMutable.Register(() => new LayoutManager(), typeof(ILayoutManager));
@ -176,13 +176,13 @@ namespace Perspex
{
if (platformID == 4 || platformID == 6)
{
this.InitializeSubsystem("Perspex.Cairo");
this.InitializeSubsystem("Perspex.Gtk");
InitializeSubsystem("Perspex.Cairo");
InitializeSubsystem("Perspex.Gtk");
}
else
{
this.InitializeSubsystem("Perspex.Direct2D1");
this.InitializeSubsystem("Perspex.Win32");
InitializeSubsystem("Perspex.Direct2D1");
InitializeSubsystem("Perspex.Win32");
}
}

8
src/Perspex.Base/BindingDescriptor.cs

@ -81,7 +81,7 @@ namespace Perspex
/// <summary>
/// Gets a description of the binding.
/// </summary>
public string Description => string.Format("{0}.{1}", this.Source?.GetType().Name, this.Property.Name);
public string Description => string.Format("{0}.{1}", Source?.GetType().Name, Property.Name);
/// <summary>
/// Makes a two-way binding.
@ -110,7 +110,7 @@ namespace Perspex
/// <returns>The object that the method was called on.</returns>
public BindingDescriptor WithMode(BindingMode mode)
{
this.Mode = mode;
Mode = mode;
return this;
}
@ -121,14 +121,14 @@ namespace Perspex
/// <returns>The object that the method was called on.</returns>
public BindingDescriptor WithPriority(BindingPriority priority)
{
this.Priority = priority;
Priority = priority;
return this;
}
/// <inheritdoc/>
protected override IDisposable SubscribeCore(IObserver<object> observer)
{
return this.Source.GetObservable(this.Property).Subscribe(observer);
return Source.GetObservable(Property).Subscribe(observer);
}
}
}

46
src/Perspex.Base/Collections/PerspexDictionary.cs

@ -83,23 +83,23 @@ namespace Perspex.Collections
if (replace)
{
if (this.PropertyChanged != null)
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs($"Item[{key}]"));
PropertyChanged(this, new PropertyChangedEventArgs($"Item[{key}]"));
}
if (this.CollectionChanged != null)
if (CollectionChanged != null)
{
var e = new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Replace,
new KeyValuePair<TKey, TValue>(key, value),
new KeyValuePair<TKey, TValue>(key, old));
this.CollectionChanged(this, e);
CollectionChanged(this, e);
}
}
else
{
this.NotifyAdd(key, value);
NotifyAdd(key, value);
}
}
}
@ -108,7 +108,7 @@ namespace Perspex.Collections
public void Add(TKey key, TValue value)
{
_inner.Add(key, value);
this.NotifyAdd(key, value);
NotifyAdd(key, value);
}
/// <inheritdoc/>
@ -118,19 +118,19 @@ namespace Perspex.Collections
_inner = new Dictionary<TKey, TValue>();
if (this.PropertyChanged != null)
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Count"));
this.PropertyChanged(this, new PropertyChangedEventArgs($"Item[]"));
PropertyChanged(this, new PropertyChangedEventArgs("Count"));
PropertyChanged(this, new PropertyChangedEventArgs($"Item[]"));
}
if (this.CollectionChanged != null)
if (CollectionChanged != null)
{
var e = new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Remove,
old.ToList(),
-1);
this.CollectionChanged(this, e);
CollectionChanged(this, e);
}
}
@ -159,19 +159,19 @@ namespace Perspex.Collections
if (_inner.TryGetValue(key, out value))
{
if (this.PropertyChanged != null)
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Count"));
this.PropertyChanged(this, new PropertyChangedEventArgs($"Item[{key}]"));
PropertyChanged(this, new PropertyChangedEventArgs("Count"));
PropertyChanged(this, new PropertyChangedEventArgs($"Item[{key}]"));
}
if (this.CollectionChanged != null)
if (CollectionChanged != null)
{
var e = new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Remove,
new[] { new KeyValuePair<TKey, TValue>(key, value) },
-1);
this.CollectionChanged(this, e);
CollectionChanged(this, e);
}
return true;
@ -197,7 +197,7 @@ namespace Perspex.Collections
/// <inheritdoc/>
void ICollection<KeyValuePair<TKey, TValue>>.Add(KeyValuePair<TKey, TValue> item)
{
this.Add(item.Key, item.Value);
Add(item.Key, item.Value);
}
/// <inheritdoc/>
@ -209,25 +209,25 @@ namespace Perspex.Collections
/// <inheritdoc/>
bool ICollection<KeyValuePair<TKey, TValue>>.Remove(KeyValuePair<TKey, TValue> item)
{
return this.Remove(item.Key);
return Remove(item.Key);
}
private void NotifyAdd(TKey key, TValue value)
{
if (this.PropertyChanged != null)
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Count"));
this.PropertyChanged(this, new PropertyChangedEventArgs($"Item[{key}]"));
PropertyChanged(this, new PropertyChangedEventArgs("Count"));
PropertyChanged(this, new PropertyChangedEventArgs($"Item[{key}]"));
}
if (this.CollectionChanged != null)
if (CollectionChanged != null)
{
var val = new KeyValuePair<TKey, TValue>(key, value);
var e = new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Add,
new[] { new KeyValuePair<TKey, TValue>(key, value) },
-1);
this.CollectionChanged(this, e);
CollectionChanged(this, e);
}
}
}

52
src/Perspex.Base/Collections/PerspexList.cs

@ -121,13 +121,13 @@ namespace Perspex.Collections
T old = _inner[index];
_inner[index] = value;
if (this.CollectionChanged != null)
if (CollectionChanged != null)
{
var e = new NotifyCollectionChangedEventArgs(
NotifyCollectionChangedAction.Replace,
value,
old);
this.CollectionChanged(this, e);
CollectionChanged(this, e);
}
}
}
@ -151,7 +151,7 @@ namespace Perspex.Collections
{
int index = _inner.Count;
_inner.Add(item);
this.NotifyAdd(new[] { item }, index);
NotifyAdd(new[] { item }, index);
}
/// <summary>
@ -164,7 +164,7 @@ namespace Perspex.Collections
int index = _inner.Count;
_inner.AddRange(items);
this.NotifyAdd((items as IList) ?? items.ToList(), index);
NotifyAdd((items as IList) ?? items.ToList(), index);
}
/// <summary>
@ -174,7 +174,7 @@ namespace Perspex.Collections
{
var old = _inner;
_inner = new List<T>();
this.NotifyRemove(old, 0);
NotifyRemove(old, 0);
}
/// <summary>
@ -226,7 +226,7 @@ namespace Perspex.Collections
public void Insert(int index, T item)
{
_inner.Insert(index, item);
this.NotifyAdd(new[] { item }, index);
NotifyAdd(new[] { item }, index);
}
/// <summary>
@ -239,7 +239,7 @@ namespace Perspex.Collections
Contract.Requires<ArgumentNullException>(items != null);
_inner.InsertRange(index, items);
this.NotifyAdd((items as IList) ?? items.ToList(), index);
NotifyAdd((items as IList) ?? items.ToList(), index);
}
/// <summary>
@ -254,7 +254,7 @@ namespace Perspex.Collections
if (index != -1)
{
_inner.RemoveAt(index);
this.NotifyRemove(new[] { item }, index);
NotifyRemove(new[] { item }, index);
return true;
}
@ -274,7 +274,7 @@ namespace Perspex.Collections
foreach (var i in items)
{
// TODO: Optimize to only send as many notifications as necessary.
this.Remove(i);
Remove(i);
}
}
@ -286,51 +286,51 @@ namespace Perspex.Collections
{
T item = _inner[index];
_inner.RemoveAt(index);
this.NotifyRemove(new[] { item }, index);
NotifyRemove(new[] { item }, index);
}
/// <inheritdoc/>
int IList.Add(object value)
{
int index = this.Count;
this.Add((T)value);
int index = Count;
Add((T)value);
return index;
}
/// <inheritdoc/>
bool IList.Contains(object value)
{
return this.Contains((T)value);
return Contains((T)value);
}
/// <inheritdoc/>
void IList.Clear()
{
this.Clear();
Clear();
}
/// <inheritdoc/>
int IList.IndexOf(object value)
{
return this.IndexOf((T)value);
return IndexOf((T)value);
}
/// <inheritdoc/>
void IList.Insert(int index, object value)
{
this.Insert(index, (T)value);
Insert(index, (T)value);
}
/// <inheritdoc/>
void IList.Remove(object value)
{
this.Remove((T)value);
Remove((T)value);
}
/// <inheritdoc/>
void IList.RemoveAt(int index)
{
this.RemoveAt(index);
RemoveAt(index);
}
/// <inheritdoc/>
@ -352,13 +352,13 @@ namespace Perspex.Collections
/// <param name="index">The starting index.</param>
private void NotifyAdd(IList t, int index)
{
if (this.CollectionChanged != null)
if (CollectionChanged != null)
{
var e = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, t, index);
this.CollectionChanged(this, e);
CollectionChanged(this, e);
}
this.NotifyCountChanged();
NotifyCountChanged();
}
/// <summary>
@ -367,9 +367,9 @@ namespace Perspex.Collections
/// </summary>
private void NotifyCountChanged()
{
if (this.PropertyChanged != null)
if (PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs("Count"));
PropertyChanged(this, new PropertyChangedEventArgs("Count"));
}
}
@ -380,13 +380,13 @@ namespace Perspex.Collections
/// <param name="index">The starting index.</param>
private void NotifyRemove(IList t, int index)
{
if (this.CollectionChanged != null)
if (CollectionChanged != null)
{
var e = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, t, index);
this.CollectionChanged(this, e);
CollectionChanged(this, e);
}
this.NotifyCountChanged();
NotifyCountChanged();
}
}
}

8
src/Perspex.Base/Diagnostics/PerspexPropertyValue.cs

@ -22,10 +22,10 @@ namespace Perspex.Diagnostics
BindingPriority priority,
string diagnostic)
{
this.Property = property;
this.Value = value;
this.Priority = priority;
this.Diagnostic = diagnostic;
Property = property;
Value = value;
Priority = priority;
Diagnostic = diagnostic;
}
/// <summary>

104
src/Perspex.Base/PerspexObject.cs

@ -100,17 +100,17 @@ namespace Perspex
_propertyLog = Log.ForContext(new[]
{
new PropertyEnricher("Area", "Property"),
new PropertyEnricher("SourceContext", this.GetType()),
new PropertyEnricher("Id", this.GetHashCode()),
new PropertyEnricher("SourceContext", GetType()),
new PropertyEnricher("Id", GetHashCode()),
});
foreach (var property in this.GetRegisteredProperties())
foreach (var property in GetRegisteredProperties())
{
var e = new PerspexPropertyChangedEventArgs(
this,
property,
PerspexProperty.UnsetValue,
property.GetDefaultValue(this.GetType()),
property.GetDefaultValue(GetType()),
BindingPriority.Unset);
property.NotifyInitialized(e);
@ -151,32 +151,32 @@ namespace Perspex
{
if (_inheritanceParent != null)
{
_inheritanceParent.PropertyChanged -= this.ParentPropertyChanged;
_inheritanceParent.PropertyChanged -= ParentPropertyChanged;
}
var inherited = (from property in GetProperties(this.GetType())
var inherited = (from property in GetProperties(GetType())
where property.Inherits
select new
{
Property = property,
Value = this.GetValue(property),
Value = GetValue(property),
}).ToList();
_inheritanceParent = value;
foreach (var i in inherited)
{
object newValue = this.GetValue(i.Property);
object newValue = GetValue(i.Property);
if (!object.Equals(i.Value, newValue))
if (!Equals(i.Value, newValue))
{
this.RaisePropertyChanged(i.Property, i.Value, newValue, BindingPriority.LocalValue);
RaisePropertyChanged(i.Property, i.Value, newValue, BindingPriority.LocalValue);
}
}
if (_inheritanceParent != null)
{
_inheritanceParent.PropertyChanged += this.ParentPropertyChanged;
_inheritanceParent.PropertyChanged += ParentPropertyChanged;
}
}
}
@ -188,8 +188,8 @@ namespace Perspex
/// <param name="property">The property.</param>
public object this[PerspexProperty property]
{
get { return this.GetValue(property); }
set { this.SetValue(property, value); }
get { return GetValue(property); }
set { SetValue(property, value); }
}
/// <summary>
@ -225,16 +225,16 @@ namespace Perspex
{
case BindingMode.Default:
case BindingMode.OneWay:
this.Bind(binding.Property, value, binding.Priority);
Bind(binding.Property, value, binding.Priority);
break;
case BindingMode.OneTime:
this.SetValue(binding.Property, sourceBinding.Source.GetValue(sourceBinding.Property), binding.Priority);
SetValue(binding.Property, sourceBinding.Source.GetValue(sourceBinding.Property), binding.Priority);
break;
case BindingMode.OneWayToSource:
sourceBinding.Source.Bind(sourceBinding.Property, this.GetObservable(binding.Property), binding.Priority);
sourceBinding.Source.Bind(sourceBinding.Property, GetObservable(binding.Property), binding.Priority);
break;
case BindingMode.TwoWay:
this.BindTwoWay(binding.Property, sourceBinding.Source, sourceBinding.Property);
BindTwoWay(binding.Property, sourceBinding.Source, sourceBinding.Property);
break;
}
}
@ -303,7 +303,7 @@ namespace Perspex
{
Contract.Requires<NullReferenceException>(property != null);
this.SetValue(property, PerspexProperty.UnsetValue);
SetValue(property, PerspexProperty.UnsetValue);
}
/// <summary>
@ -326,16 +326,16 @@ namespace Perspex
}
};
observer.OnNext(this.GetValue(property));
observer.OnNext(GetValue(property));
this.PropertyChanged += handler;
PropertyChanged += handler;
return Disposable.Create(() =>
{
this.PropertyChanged -= handler;
PropertyChanged -= handler;
});
},
this.GetObservableDescription(property));
GetObservableDescription(property));
}
/// <summary>
@ -348,7 +348,7 @@ namespace Perspex
{
Contract.Requires<NullReferenceException>(property != null);
return this.GetObservable((PerspexProperty)property).Cast<T>();
return GetObservable((PerspexProperty)property).Cast<T>();
}
/// <summary>
@ -371,14 +371,14 @@ namespace Perspex
}
};
this.PropertyChanged += handler;
PropertyChanged += handler;
return Disposable.Create(() =>
{
this.PropertyChanged -= handler;
PropertyChanged -= handler;
});
},
this.GetObservableDescription(property));
GetObservableDescription(property));
}
/// <summary>
@ -405,7 +405,7 @@ namespace Perspex
if (result == PerspexProperty.UnsetValue)
{
result = this.GetDefaultValue(property);
result = GetDefaultValue(property);
}
return result;
@ -421,7 +421,7 @@ namespace Perspex
{
Contract.Requires<NullReferenceException>(property != null);
return (T)this.GetValue((PerspexProperty)property);
return (T)GetValue((PerspexProperty)property);
}
/// <summary>
@ -432,7 +432,7 @@ namespace Perspex
/// </returns>
public IEnumerable<PerspexProperty> GetRegisteredProperties()
{
Type type = this.GetType();
Type type = GetType();
while (type != null)
{
@ -469,7 +469,7 @@ namespace Perspex
/// <returns>True if the property is registered, otherwise false.</returns>
public bool IsRegistered(PerspexProperty property)
{
Type type = this.GetType();
Type type = GetType();
while (type != null)
{
@ -504,12 +504,12 @@ namespace Perspex
PriorityValue v;
if (!this.IsRegistered(property))
if (!IsRegistered(property))
{
throw new InvalidOperationException(string.Format(
"Property '{0}' not registered on '{1}'",
property.Name,
this.GetType()));
GetType()));
}
if (!TypeUtilities.TryCast(property.PropertyType, value, out value))
@ -528,7 +528,7 @@ namespace Perspex
return;
}
v = this.CreatePriorityValue(property);
v = CreatePriorityValue(property);
_values.Add(property, v);
}
@ -554,7 +554,7 @@ namespace Perspex
{
Contract.Requires<NullReferenceException>(property != null);
this.SetValue((PerspexProperty)property, value, priority);
SetValue((PerspexProperty)property, value, priority);
}
/// <summary>
@ -576,17 +576,17 @@ namespace Perspex
PriorityValue v;
IDescription description = source as IDescription;
if (!this.IsRegistered(property))
if (!IsRegistered(property))
{
throw new InvalidOperationException(string.Format(
"Property '{0}' not registered on '{1}'",
property.Name,
this.GetType()));
GetType()));
}
if (!_values.TryGetValue(property, out v))
{
v = this.CreatePriorityValue(property);
v = CreatePriorityValue(property);
_values.Add(property, v);
}
@ -616,7 +616,7 @@ namespace Perspex
{
Contract.Requires<NullReferenceException>(property != null);
return this.Bind((PerspexProperty)property, source.Select(x => (object)x), priority);
return Bind((PerspexProperty)property, source.Select(x => (object)x), priority);
}
/// <summary>
@ -639,8 +639,8 @@ namespace Perspex
BindingPriority priority = BindingPriority.LocalValue)
{
return new CompositeDisposable(
this.Bind(property, source.GetObservable(sourceProperty)),
source.Bind(sourceProperty, this.GetObservable(property)));
Bind(property, source.GetObservable(sourceProperty)),
source.Bind(sourceProperty, GetObservable(property)));
}
/// <summary>
@ -697,7 +697,7 @@ namespace Perspex
/// <returns>The <see cref="PriorityValue"/>.</returns>
private PriorityValue CreatePriorityValue(PerspexProperty property)
{
Func<PerspexObject, object, object> validate = property.GetValidationFunc(this.GetType());
Func<PerspexObject, object, object> validate = property.GetValidationFunc(GetType());
Func<object, object> validate2 = null;
if (validate != null)
@ -710,15 +710,15 @@ namespace Perspex
result.Changed.Subscribe(x =>
{
object oldValue = (x.Item1 == PerspexProperty.UnsetValue) ?
this.GetDefaultValue(property) :
GetDefaultValue(property) :
x.Item1;
object newValue = (x.Item2 == PerspexProperty.UnsetValue) ?
this.GetDefaultValue(property) :
GetDefaultValue(property) :
x.Item2;
if (!object.Equals(oldValue, newValue))
if (!Equals(oldValue, newValue))
{
this.RaisePropertyChanged(property, oldValue, newValue, (BindingPriority)result.ValuePriority);
RaisePropertyChanged(property, oldValue, newValue, (BindingPriority)result.ValuePriority);
_propertyLog.Verbose(
"{Property} changed from {$Old} to {$Value} with priority {Priority}",
@ -745,7 +745,7 @@ namespace Perspex
}
else
{
return property.GetDefaultValue(this.GetType());
return property.GetDefaultValue(GetType());
}
}
@ -761,9 +761,9 @@ namespace Perspex
{
Contract.Requires<ArgumentNullException>(e != null);
if (e.Property.Inherits && !this.IsSet(e.Property))
if (e.Property.Inherits && !IsSet(e.Property))
{
this.RaisePropertyChanged(e.Property, e.OldValue, e.NewValue, BindingPriority.LocalValue);
RaisePropertyChanged(e.Property, e.OldValue, e.NewValue, BindingPriority.LocalValue);
}
}
@ -774,7 +774,7 @@ namespace Perspex
/// <returns>The description.</returns>
private string GetObservableDescription(PerspexProperty property)
{
return string.Format("{0}.{1}", this.GetType().Name, property.Name);
return string.Format("{0}.{1}", GetType().Name, property.Name);
}
/// <summary>
@ -799,12 +799,12 @@ namespace Perspex
newValue,
priority);
this.OnPropertyChanged(e);
OnPropertyChanged(e);
property.NotifyChanged(e);
if (this.PropertyChanged != null)
if (PropertyChanged != null)
{
this.PropertyChanged(this, e);
PropertyChanged(this, e);
}
if (_inpcChanged != null)

24
src/Perspex.Base/PerspexProperty.cs

@ -68,13 +68,13 @@ namespace Perspex
Contract.Requires<NullReferenceException>(valueType != null);
Contract.Requires<NullReferenceException>(ownerType != null);
this.Name = name;
this.PropertyType = valueType;
this.OwnerType = ownerType;
Name = name;
PropertyType = valueType;
OwnerType = ownerType;
_defaultValues.Add(ownerType, defaultValue);
this.Inherits = inherits;
this.DefaultBindingMode = defaultBindingMode;
this.IsAttached = isAttached;
Inherits = inherits;
DefaultBindingMode = defaultBindingMode;
IsAttached = isAttached;
if (validate != null)
{
@ -335,7 +335,7 @@ namespace Perspex
type = type.GetTypeInfo().BaseType;
}
return _defaultValues[this.OwnerType];
return _defaultValues[OwnerType];
}
/// <summary>
@ -371,7 +371,7 @@ namespace Perspex
/// <returns>True if the value is valid, otherwise false.</returns>
public bool IsValidValue(object value)
{
return TypeUtilities.TryCast(this.PropertyType, value, out value);
return TypeUtilities.TryCast(PropertyType, value, out value);
}
/// <summary>
@ -381,7 +381,7 @@ namespace Perspex
/// <param name="defaultValue">The default value.</param>
public void OverrideDefaultValue<T>(object defaultValue)
{
this.OverrideDefaultValue(typeof(T), defaultValue);
OverrideDefaultValue(typeof(T), defaultValue);
}
/// <summary>
@ -393,11 +393,11 @@ namespace Perspex
{
Contract.Requires<NullReferenceException>(type != null);
if (!TypeUtilities.TryCast(this.PropertyType, defaultValue, out defaultValue))
if (!TypeUtilities.TryCast(PropertyType, defaultValue, out defaultValue))
{
throw new InvalidOperationException(string.Format(
"Invalid value for Property '{0}': {1} ({2})",
this.Name,
Name,
defaultValue,
defaultValue.GetType().FullName));
}
@ -433,7 +433,7 @@ namespace Perspex
/// <returns>The property's string representation.</returns>
public override string ToString()
{
return this.Name;
return Name;
}
/// <summary>

10
src/Perspex.Base/PerspexPropertyChangedEventArgs.cs

@ -23,11 +23,11 @@ namespace Perspex
object newValue,
BindingPriority priority)
{
this.Sender = sender;
this.Property = property;
this.OldValue = oldValue;
this.NewValue = newValue;
this.Priority = priority;
Sender = sender;
Property = property;
OldValue = oldValue;
NewValue = newValue;
Priority = priority;
}
/// <summary>

4
src/Perspex.Base/PerspexProperty`1.cs

@ -61,7 +61,7 @@ namespace Perspex
/// <returns>The default value.</returns>
public TValue GetDefaultValue<T>()
{
return (TValue)this.GetDefaultValue(typeof(T));
return (TValue)GetDefaultValue(typeof(T));
}
/// <summary>
@ -74,7 +74,7 @@ namespace Perspex
var f = validation != null ?
(o, v) => validation((T)o, (TValue)v) :
(Func<PerspexObject, object, object>)null;
this.OverrideValidation(typeof(T), f);
OverrideValidation(typeof(T), f);
}
/// <summary>

4
src/Perspex.Base/Platform/PlatformHandle.cs

@ -19,8 +19,8 @@ namespace Perspex.Platform
/// </param>
public PlatformHandle(IntPtr handle, string descriptor)
{
this.Handle = handle;
this.HandleDescriptor = descriptor;
Handle = handle;
HandleDescriptor = descriptor;
}
/// <summary>

10
src/Perspex.Base/PriorityBindingEntry.cs

@ -23,7 +23,7 @@ namespace Perspex
/// </param>
public PriorityBindingEntry(int index)
{
this.Index = index;
Index = index;
}
/// <summary>
@ -77,18 +77,18 @@ namespace Perspex
throw new Exception("PriorityValue.Entry.Start() called more than once.");
}
this.Observable = binding;
this.Value = PerspexProperty.UnsetValue;
Observable = binding;
Value = PerspexProperty.UnsetValue;
if (binding is IDescription)
{
this.Description = ((IDescription)binding).Description;
Description = ((IDescription)binding).Description;
}
_subscription = binding.Subscribe(
value =>
{
this.Value = value;
Value = value;
changed(this);
},
() => completed(this));

44
src/Perspex.Base/PriorityLevel.cs

@ -79,10 +79,10 @@ namespace Perspex
_mode = mode;
_changed = changed;
this.Priority = priority;
this.Value = _directValue = PerspexProperty.UnsetValue;
this.ActiveBindingIndex = -1;
this.Bindings = new LinkedList<PriorityBindingEntry>();
Priority = priority;
Value = _directValue = PerspexProperty.UnsetValue;
ActiveBindingIndex = -1;
Bindings = new LinkedList<PriorityBindingEntry>();
}
/// <summary>
@ -102,7 +102,7 @@ namespace Perspex
set
{
this.Value = _directValue = value;
Value = _directValue = value;
_changed(this);
}
}
@ -133,17 +133,17 @@ namespace Perspex
Contract.Requires<ArgumentNullException>(binding != null);
var entry = new PriorityBindingEntry(_nextIndex++);
var node = this.Bindings.AddFirst(entry);
var node = Bindings.AddFirst(entry);
entry.Start(binding, this.Changed, this.Completed);
entry.Start(binding, Changed, Completed);
return Disposable.Create(() =>
{
this.Bindings.Remove(node);
Bindings.Remove(node);
if (entry.Index >= this.ActiveBindingIndex)
if (entry.Index >= ActiveBindingIndex)
{
this.ActivateFirstBinding();
ActivateFirstBinding();
}
});
}
@ -154,17 +154,17 @@ namespace Perspex
/// <param name="entry">The entry that changed.</param>
private void Changed(PriorityBindingEntry entry)
{
if (_mode == LevelPrecedenceMode.Latest || entry.Index >= this.ActiveBindingIndex)
if (_mode == LevelPrecedenceMode.Latest || entry.Index >= ActiveBindingIndex)
{
if (entry.Value != PerspexProperty.UnsetValue)
{
this.Value = entry.Value;
this.ActiveBindingIndex = entry.Index;
Value = entry.Value;
ActiveBindingIndex = entry.Index;
_changed(this);
}
else
{
this.ActivateFirstBinding();
ActivateFirstBinding();
}
}
}
@ -175,11 +175,11 @@ namespace Perspex
/// <param name="entry">The entry that completed.</param>
private void Completed(PriorityBindingEntry entry)
{
this.Bindings.Remove(entry);
Bindings.Remove(entry);
if (entry.Index >= this.ActiveBindingIndex)
if (entry.Index >= ActiveBindingIndex)
{
this.ActivateFirstBinding();
ActivateFirstBinding();
}
}
@ -188,19 +188,19 @@ namespace Perspex
/// </summary>
private void ActivateFirstBinding()
{
foreach (var binding in this.Bindings)
foreach (var binding in Bindings)
{
if (binding.Value != PerspexProperty.UnsetValue)
{
this.Value = binding.Value;
this.ActiveBindingIndex = binding.Index;
Value = binding.Value;
ActiveBindingIndex = binding.Index;
_changed(this);
return;
}
}
this.Value = this.DirectValue;
this.ActiveBindingIndex = -1;
Value = DirectValue;
ActiveBindingIndex = -1;
_changed(this);
}
}

24
src/Perspex.Base/PriorityValue.cs

@ -65,7 +65,7 @@ namespace Perspex
_name = name;
_valueType = valueType;
_value = PerspexProperty.UnsetValue;
this.ValuePriority = int.MaxValue;
ValuePriority = int.MaxValue;
_validate = validate;
}
@ -107,7 +107,7 @@ namespace Perspex
/// </returns>
public IDisposable Add(IObservable<object> binding, int priority)
{
return this.GetLevel(priority).Add(binding);
return GetLevel(priority).Add(binding);
}
/// <summary>
@ -117,7 +117,7 @@ namespace Perspex
/// <param name="priority">The priority</param>
public void SetDirectValue(object value, int priority)
{
this.GetLevel(priority).DirectValue = value;
GetLevel(priority).DirectValue = value;
}
/// <summary>
@ -152,7 +152,7 @@ namespace Perspex
b.AppendLine();
}
b.Append(this.ValuePriority == level.Key ? "*" : string.Empty);
b.Append(ValuePriority == level.Key ? "*" : string.Empty);
b.Append("Priority ");
b.Append(level.Key);
b.Append(": ");
@ -184,9 +184,9 @@ namespace Perspex
{
PriorityLevel level;
if (_levels.TryGetValue(this.ValuePriority, out level))
if (_levels.TryGetValue(ValuePriority, out level))
{
this.UpdateValue(level.Value, level.Priority);
UpdateValue(level.Value, level.Priority);
}
}
}
@ -204,7 +204,7 @@ namespace Perspex
if (!_levels.TryGetValue(priority, out result))
{
var mode = (LevelPrecedenceMode)(priority % 2);
result = new PriorityLevel(priority, mode, this.ValueChanged);
result = new PriorityLevel(priority, mode, ValueChanged);
_levels.Add(priority, result);
}
@ -234,7 +234,7 @@ namespace Perspex
value = _validate(value);
}
this.ValuePriority = priority;
ValuePriority = priority;
_value = value;
_changed.OnNext(Tuple.Create(old, _value));
}
@ -245,11 +245,11 @@ namespace Perspex
/// <param name="level">The priority level of the changed entry.</param>
private void ValueChanged(PriorityLevel level)
{
if (level.Priority <= this.ValuePriority)
if (level.Priority <= ValuePriority)
{
if (level.Value != PerspexProperty.UnsetValue)
{
this.UpdateValue(level.Value, level.Priority);
UpdateValue(level.Value, level.Priority);
}
else
{
@ -257,12 +257,12 @@ namespace Perspex
{
if (i.Value != PerspexProperty.UnsetValue)
{
this.UpdateValue(i.Value, i.Priority);
UpdateValue(i.Value, i.Priority);
return;
}
}
this.UpdateValue(PerspexProperty.UnsetValue, int.MaxValue);
UpdateValue(PerspexProperty.UnsetValue, int.MaxValue);
}
}
}

2
src/Perspex.Base/Reactive/PerspexObservable.cs

@ -28,7 +28,7 @@ namespace Perspex.Reactive
}
_subscribe = subscribe;
this.Description = description;
Description = description;
}
/// <summary>

42
src/Perspex.Base/Threading/DispatcherTimer.cs

@ -25,7 +25,7 @@ namespace Perspex.Threading
public DispatcherTimer()
{
_priority = DispatcherPriority.Normal;
this.Dispatcher = Dispatcher.UIThread;
Dispatcher = Dispatcher.UIThread;
}
/// <summary>
@ -35,7 +35,7 @@ namespace Perspex.Threading
public DispatcherTimer(DispatcherPriority priority)
{
_priority = priority;
this.Dispatcher = Dispatcher.UIThread;
Dispatcher = Dispatcher.UIThread;
}
/// <summary>
@ -46,7 +46,7 @@ namespace Perspex.Threading
public DispatcherTimer(DispatcherPriority priority, Dispatcher dispatcher)
{
_priority = priority;
this.Dispatcher = dispatcher;
Dispatcher = dispatcher;
}
/// <summary>
@ -59,9 +59,9 @@ namespace Perspex.Threading
public DispatcherTimer(TimeSpan interval, DispatcherPriority priority, EventHandler callback, Dispatcher dispatcher)
{
_priority = priority;
this.Dispatcher = dispatcher;
this.Interval = interval;
this.Tick += callback;
Dispatcher = dispatcher;
Interval = interval;
Tick += callback;
}
/// <summary>
@ -71,7 +71,7 @@ namespace Perspex.Threading
{
if (_timer != null)
{
this.Stop();
Stop();
}
}
@ -85,9 +85,7 @@ namespace Perspex.Threading
/// </summary>
public Dispatcher Dispatcher
{
get;
private set;
}
get; }
/// <summary>
/// Gets or sets the interval at which the timer ticks.
@ -101,10 +99,10 @@ namespace Perspex.Threading
set
{
bool enabled = this.IsEnabled;
this.Stop();
bool enabled = IsEnabled;
Stop();
_interval = value;
this.IsEnabled = enabled;
IsEnabled = enabled;
}
}
@ -120,15 +118,15 @@ namespace Perspex.Threading
set
{
if (this.IsEnabled != value)
if (IsEnabled != value)
{
if (value)
{
this.Start();
Start();
}
else
{
this.Stop();
Stop();
}
}
}
@ -175,10 +173,10 @@ namespace Perspex.Threading
/// </summary>
public void Start()
{
if (!this.IsEnabled)
if (!IsEnabled)
{
IPlatformThreadingInterface threading = Locator.Current.GetService<IPlatformThreadingInterface>();
_timer = threading.StartTimer(this.Interval, this.InternalTick);
_timer = threading.StartTimer(Interval, InternalTick);
}
}
@ -187,7 +185,7 @@ namespace Perspex.Threading
/// </summary>
public void Stop()
{
if (this.IsEnabled)
if (IsEnabled)
{
IPlatformThreadingInterface threading = Locator.Current.GetService<IPlatformThreadingInterface>();
_timer.Dispose();
@ -200,7 +198,7 @@ namespace Perspex.Threading
/// </summary>
private void InternalTick()
{
this.Dispatcher.Post(this.RaiseTick, _priority);
Dispatcher.Post(RaiseTick, _priority);
}
/// <summary>
@ -208,9 +206,9 @@ namespace Perspex.Threading
/// </summary>
private void RaiseTick()
{
if (this.Tick != null)
if (Tick != null)
{
this.Tick(this, EventArgs.Empty);
Tick(this, EventArgs.Empty);
}
}
}

10
src/Perspex.Base/Threading/MainLoop.cs

@ -97,7 +97,7 @@ namespace Perspex.Win32.Threading
public Task InvokeAsync(Action action, DispatcherPriority priority)
{
var job = new Job(action, priority, false);
this.AddJob(job);
AddJob(job);
return job.TaskCompletionSource.Task;
}
@ -109,7 +109,7 @@ namespace Perspex.Win32.Threading
/// <param name="priority">The priority with which to invoke the method.</param>
internal void Post(Action action, DispatcherPriority priority)
{
this.AddJob(new Job(action, priority, true));
AddJob(new Job(action, priority, true));
}
private void AddJob(Job job)
@ -134,9 +134,9 @@ namespace Perspex.Win32.Threading
/// <param name="throwOnUiThread">Do not wrap excepption in TaskCompletionSource</param>
public Job(Action action, DispatcherPriority priority, bool throwOnUiThread)
{
this.Action = action;
this.Priority = priority;
this.TaskCompletionSource = throwOnUiThread ? null : new TaskCompletionSource<object>();
Action = action;
Priority = priority;
TaskCompletionSource = throwOnUiThread ? null : new TaskCompletionSource<object>();
}
/// <summary>

38
src/Perspex.Controls/Border.cs

@ -39,8 +39,8 @@ namespace Perspex.Controls
/// </summary>
static Border()
{
Control.AffectsRender(Border.BackgroundProperty);
Control.AffectsRender(Border.BorderBrushProperty);
AffectsRender(BackgroundProperty);
AffectsRender(BorderBrushProperty);
}
/// <summary>
@ -48,8 +48,8 @@ namespace Perspex.Controls
/// </summary>
public Brush Background
{
get { return this.GetValue(BackgroundProperty); }
set { this.SetValue(BackgroundProperty, value); }
get { return GetValue(BackgroundProperty); }
set { SetValue(BackgroundProperty, value); }
}
/// <summary>
@ -57,8 +57,8 @@ namespace Perspex.Controls
/// </summary>
public Brush BorderBrush
{
get { return this.GetValue(BorderBrushProperty); }
set { this.SetValue(BorderBrushProperty, value); }
get { return GetValue(BorderBrushProperty); }
set { SetValue(BorderBrushProperty, value); }
}
/// <summary>
@ -66,8 +66,8 @@ namespace Perspex.Controls
/// </summary>
public double BorderThickness
{
get { return this.GetValue(BorderThicknessProperty); }
set { this.SetValue(BorderThicknessProperty, value); }
get { return GetValue(BorderThicknessProperty); }
set { SetValue(BorderThicknessProperty, value); }
}
/// <summary>
@ -75,8 +75,8 @@ namespace Perspex.Controls
/// </summary>
public float CornerRadius
{
get { return this.GetValue(CornerRadiusProperty); }
set { this.SetValue(CornerRadiusProperty, value); }
get { return GetValue(CornerRadiusProperty); }
set { SetValue(CornerRadiusProperty, value); }
}
/// <summary>
@ -85,11 +85,11 @@ namespace Perspex.Controls
/// <param name="context">The drawing context.</param>
public override void Render(IDrawingContext context)
{
var background = this.Background;
var borderBrush = this.BorderBrush;
var borderThickness = this.BorderThickness;
var cornerRadius = this.CornerRadius;
var rect = new Rect(this.Bounds.Size).Deflate(this.BorderThickness);
var background = Background;
var borderBrush = BorderBrush;
var borderThickness = BorderThickness;
var cornerRadius = CornerRadius;
var rect = new Rect(Bounds.Size).Deflate(BorderThickness);
if (background != null)
{
@ -109,8 +109,8 @@ namespace Perspex.Controls
/// <returns>The desired size of the control.</returns>
protected override Size MeasureOverride(Size availableSize)
{
var child = this.Child;
var padding = this.Padding + new Thickness(this.BorderThickness);
var child = Child;
var padding = Padding + new Thickness(BorderThickness);
if (child != null)
{
@ -130,11 +130,11 @@ namespace Perspex.Controls
/// <returns>The space taken.</returns>
protected override Size ArrangeOverride(Size finalSize)
{
var child = this.Child;
var child = Child;
if (child != null)
{
var padding = this.Padding + new Thickness(this.BorderThickness);
var padding = Padding + new Thickness(BorderThickness);
child.Arrange(new Rect(finalSize).Deflate(padding));
}

66
src/Perspex.Controls/Button.cs

@ -78,8 +78,8 @@ namespace Perspex.Controls
/// </summary>
public event EventHandler<RoutedEventArgs> Click
{
add { this.AddHandler(ClickEvent, value); }
remove { this.RemoveHandler(ClickEvent, value); }
add { AddHandler(ClickEvent, value); }
remove { RemoveHandler(ClickEvent, value); }
}
/// <summary>
@ -87,8 +87,8 @@ namespace Perspex.Controls
/// </summary>
public ClickMode ClickMode
{
get { return this.GetValue(ClickModeProperty); }
set { this.SetValue(ClickModeProperty, value); }
get { return GetValue(ClickModeProperty); }
set { SetValue(ClickModeProperty, value); }
}
/// <summary>
@ -96,8 +96,8 @@ namespace Perspex.Controls
/// </summary>
public ICommand Command
{
get { return this.GetValue(CommandProperty); }
set { this.SetValue(CommandProperty, value); }
get { return GetValue(CommandProperty); }
set { SetValue(CommandProperty, value); }
}
/// <summary>
@ -105,8 +105,8 @@ namespace Perspex.Controls
/// </summary>
public object CommandParameter
{
get { return this.GetValue(CommandParameterProperty); }
set { this.SetValue(CommandParameterProperty, value); }
get { return GetValue(CommandParameterProperty); }
set { SetValue(CommandParameterProperty, value); }
}
/// <summary>
@ -115,8 +115,8 @@ namespace Perspex.Controls
/// </summary>
public bool IsDefault
{
get { return this.GetValue(IsDefaultProperty); }
set { this.SetValue(IsDefaultProperty, value); }
get { return GetValue(IsDefaultProperty); }
set { SetValue(IsDefaultProperty, value); }
}
/// <inheritdoc/>
@ -136,13 +136,13 @@ namespace Perspex.Controls
{
base.OnAttachedToVisualTree(root);
if (this.IsDefault)
if (IsDefault)
{
var inputElement = root as IInputElement;
if (inputElement != null)
{
this.ListenForDefault(inputElement);
ListenForDefault(inputElement);
}
}
}
@ -152,14 +152,14 @@ namespace Perspex.Controls
{
if (e.Key == Key.Enter)
{
this.RaiseClickEvent();
RaiseClickEvent();
e.Handled = true;
}
else if (e.Key == Key.Space)
{
if (this.ClickMode == ClickMode.Press)
if (ClickMode == ClickMode.Press)
{
this.RaiseClickEvent();
RaiseClickEvent();
}
e.Handled = true;
@ -173,9 +173,9 @@ namespace Perspex.Controls
{
if (e.Key == Key.Space)
{
if (this.ClickMode == ClickMode.Release)
if (ClickMode == ClickMode.Release)
{
this.RaiseClickEvent();
RaiseClickEvent();
}
e.Handled = true;
@ -187,13 +187,13 @@ namespace Perspex.Controls
{
base.OnDetachedFromVisualTree(oldRoot);
if (this.IsDefault)
if (IsDefault)
{
var inputElement = oldRoot as IInputElement;
if (inputElement != null)
{
this.StopListeningForDefault(inputElement);
StopListeningForDefault(inputElement);
}
}
}
@ -204,9 +204,9 @@ namespace Perspex.Controls
/// <param name="e">The event args.</param>
protected virtual void OnClick(RoutedEventArgs e)
{
if (this.Command != null)
if (Command != null)
{
this.Command.Execute(this.CommandParameter);
Command.Execute(CommandParameter);
}
}
@ -215,13 +215,13 @@ namespace Perspex.Controls
{
base.OnPointerPressed(e);
this.Classes.Add(":pressed");
Classes.Add(":pressed");
e.Device.Capture(this);
e.Handled = true;
if (this.ClickMode == ClickMode.Press)
if (ClickMode == ClickMode.Press)
{
this.RaiseClickEvent();
RaiseClickEvent();
}
}
@ -231,12 +231,12 @@ namespace Perspex.Controls
base.OnPointerReleased(e);
e.Device.Capture(null);
this.Classes.Remove(":pressed");
Classes.Remove(":pressed");
e.Handled = true;
if (this.ClickMode == ClickMode.Release && this.Classes.Contains(":pointerover"))
if (ClickMode == ClickMode.Release && Classes.Contains(":pointerover"))
{
this.RaiseClickEvent();
RaiseClickEvent();
}
}
@ -300,7 +300,7 @@ namespace Perspex.Controls
{
// HACK: Just set the IsEnabled property for the moment. This needs to be changed to
// use IsEnabledCore etc. but it will do for now.
this.IsEnabled = this.Command == null || this.Command.CanExecute(this.CommandParameter);
IsEnabled = Command == null || Command.CanExecute(CommandParameter);
}
/// <summary>
@ -309,7 +309,7 @@ namespace Perspex.Controls
/// <param name="root">The input root.</param>
private void ListenForDefault(IInputElement root)
{
root.AddHandler(InputElement.KeyDownEvent, this.RootKeyDown);
root.AddHandler(KeyDownEvent, RootKeyDown);
}
/// <summary>
@ -318,7 +318,7 @@ namespace Perspex.Controls
/// <param name="root">The input root.</param>
private void StopListeningForDefault(IInputElement root)
{
root.RemoveHandler(InputElement.KeyDownEvent, this.RootKeyDown);
root.RemoveHandler(KeyDownEvent, RootKeyDown);
}
/// <summary>
@ -331,7 +331,7 @@ namespace Perspex.Controls
RoutedEvent = ClickEvent,
};
this.RaiseEvent(click);
RaiseEvent(click);
}
/// <summary>
@ -341,9 +341,9 @@ namespace Perspex.Controls
/// <param name="e">The event args.</param>
private void RootKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter && this.IsVisible && this.IsEnabled)
if (e.Key == Key.Enter && IsVisible && IsEnabled)
{
this.RaiseClickEvent();
RaiseClickEvent();
}
}
}

16
src/Perspex.Controls/ColumnDefinition.cs

@ -40,7 +40,7 @@ namespace Perspex.Controls
/// <param name="type">The width unit of the column.</param>
public ColumnDefinition(double value, GridUnitType type)
{
this.Width = new GridLength(value, type);
Width = new GridLength(value, type);
}
/// <summary>
@ -49,7 +49,7 @@ namespace Perspex.Controls
/// <param name="width">The width of the column.</param>
public ColumnDefinition(GridLength width)
{
this.Width = width;
Width = width;
}
/// <summary>
@ -66,8 +66,8 @@ namespace Perspex.Controls
/// </summary>
public double MaxWidth
{
get { return this.GetValue(MaxWidthProperty); }
set { this.SetValue(MaxWidthProperty, value); }
get { return GetValue(MaxWidthProperty); }
set { SetValue(MaxWidthProperty, value); }
}
/// <summary>
@ -75,8 +75,8 @@ namespace Perspex.Controls
/// </summary>
public double MinWidth
{
get { return this.GetValue(MinWidthProperty); }
set { this.SetValue(MinWidthProperty, value); }
get { return GetValue(MinWidthProperty); }
set { SetValue(MinWidthProperty, value); }
}
/// <summary>
@ -84,8 +84,8 @@ namespace Perspex.Controls
/// </summary>
public GridLength Width
{
get { return this.GetValue(WidthProperty); }
set { this.SetValue(WidthProperty, value); }
get { return GetValue(WidthProperty); }
set { SetValue(WidthProperty, value); }
}
}
}

2
src/Perspex.Controls/ColumnDefinitions.cs

@ -24,7 +24,7 @@ namespace Perspex.Controls
/// <param name="s">A string representation of the column definitions.</param>
public ColumnDefinitions(string s)
{
this.AddRange(GridLength.ParseLengths(s).Select(x => new ColumnDefinition(x)));
AddRange(GridLength.ParseLengths(s).Select(x => new ColumnDefinition(x)));
}
}
}

16
src/Perspex.Controls/ContentControl.cs

@ -45,8 +45,8 @@ namespace Perspex.Controls
/// </summary>
public object Content
{
get { return this.GetValue(ContentProperty); }
set { this.SetValue(ContentProperty, value); }
get { return GetValue(ContentProperty); }
set { SetValue(ContentProperty, value); }
}
/// <summary>
@ -63,8 +63,8 @@ namespace Perspex.Controls
/// </summary>
public HorizontalAlignment HorizontalContentAlignment
{
get { return this.GetValue(HorizontalContentAlignmentProperty); }
set { this.SetValue(HorizontalContentAlignmentProperty, value); }
get { return GetValue(HorizontalContentAlignmentProperty); }
set { SetValue(HorizontalContentAlignmentProperty, value); }
}
/// <summary>
@ -72,14 +72,14 @@ namespace Perspex.Controls
/// </summary>
public VerticalAlignment VerticalContentAlignment
{
get { return this.GetValue(VerticalContentAlignmentProperty); }
set { this.SetValue(VerticalContentAlignmentProperty, value); }
get { return GetValue(VerticalContentAlignmentProperty); }
set { SetValue(VerticalContentAlignmentProperty, value); }
}
/// <summary>
/// Gets a writeable logical children collection from the host.
/// </summary>
IPerspexList<ILogical> IReparentingHost.LogicalChildren => this.LogicalChildren;
IPerspexList<ILogical> IReparentingHost.LogicalChildren => LogicalChildren;
/// <summary>
/// Asks the control whether it wants to reparent the logical children of the specified
@ -100,7 +100,7 @@ namespace Perspex.Controls
// We allow ContentControls without ContentPresenters in the template. This can be
// useful for e.g. a simple ToggleButton that displays an image. There's no need to
// have a ContentPresenter in the visual tree for that.
this.Presenter = this.FindTemplateChild<ContentPresenter>("contentPresenter");
Presenter = this.FindTemplateChild<ContentPresenter>("contentPresenter");
}
}
}

40
src/Perspex.Controls/Control.cs

@ -84,10 +84,10 @@ namespace Perspex.Controls
/// </summary>
static Control()
{
Control.AffectsMeasure(Control.IsVisibleProperty);
PseudoClass(InputElement.IsEnabledCoreProperty, x => !x, ":disabled");
PseudoClass(InputElement.IsFocusedProperty, ":focus");
PseudoClass(InputElement.IsPointerOverProperty, ":pointerover");
AffectsMeasure(IsVisibleProperty);
PseudoClass(IsEnabledCoreProperty, x => !x, ":disabled");
PseudoClass(IsFocusedProperty, ":focus");
PseudoClass(IsPointerOverProperty, ":pointerover");
}
/// <summary>
@ -131,8 +131,8 @@ namespace Perspex.Controls
/// </remarks>
public object DataContext
{
get { return this.GetValue(DataContextProperty); }
set { this.SetValue(DataContextProperty, value); }
get { return GetValue(DataContextProperty); }
set { SetValue(DataContextProperty, value); }
}
/// <summary>
@ -140,8 +140,8 @@ namespace Perspex.Controls
/// </summary>
public ITemplate<IControl> FocusAdorner
{
get { return this.GetValue(FocusAdornerProperty); }
set { this.SetValue(FocusAdornerProperty, value); }
get { return GetValue(FocusAdornerProperty); }
set { SetValue(FocusAdornerProperty, value); }
}
/// <summary>
@ -230,7 +230,7 @@ namespace Perspex.Controls
/// </summary>
public IControl Parent
{
get { return this.GetValue(ParentProperty); }
get { return GetValue(ParentProperty); }
}
/// <summary>
@ -238,8 +238,8 @@ namespace Perspex.Controls
/// </summary>
public object Tag
{
get { return this.GetValue(TagProperty); }
set { this.SetValue(TagProperty, value); }
get { return GetValue(TagProperty); }
set { SetValue(TagProperty, value); }
}
/// <summary>
@ -247,8 +247,8 @@ namespace Perspex.Controls
/// </summary>
public ITemplatedControl TemplatedParent
{
get { return this.GetValue(TemplatedParentProperty); }
internal set { this.SetValue(TemplatedParentProperty, value); }
get { return GetValue(TemplatedParentProperty); }
internal set { SetValue(TemplatedParentProperty, value); }
}
/// <summary>
@ -256,7 +256,7 @@ namespace Perspex.Controls
/// </summary>
ILogical ILogical.LogicalParent
{
get { return this.Parent; }
get { return Parent; }
}
/// <summary>
@ -264,7 +264,7 @@ namespace Perspex.Controls
/// </summary>
IPerspexReadOnlyList<ILogical> ILogical.LogicalChildren
{
get { return this.LogicalChildren; }
get { return LogicalChildren; }
}
/// <summary>
@ -278,7 +278,7 @@ namespace Perspex.Controls
/// </remarks>
Type IStyleable.StyleKey
{
get { return this.GetType(); }
get { return GetType(); }
}
/// <summary>
@ -303,14 +303,14 @@ namespace Perspex.Controls
/// <param name="parent">The parent.</param>
void ISetLogicalParent.SetParent(ILogical parent)
{
var old = this.Parent;
var old = Parent;
if (old != null && parent != null)
{
throw new InvalidOperationException("The Control already has a parent.");
}
this.SetValue(ParentProperty, parent);
SetValue(ParentProperty, parent);
}
/// <summary>
@ -364,7 +364,7 @@ namespace Perspex.Controls
{
base.OnGotFocus(e);
if (this.IsFocused &&
if (IsFocused &&
(e.NavigationMethod == NavigationMethod.Tab ||
e.NavigationMethod == NavigationMethod.Directional))
{
@ -374,7 +374,7 @@ namespace Perspex.Controls
{
if (_focusAdorner == null)
{
var template = this.GetValue(FocusAdornerProperty);
var template = GetValue(FocusAdornerProperty);
if (template != null)
{

4
src/Perspex.Controls/Deck.cs

@ -40,8 +40,8 @@ namespace Perspex.Controls
/// </summary>
public IPageTransition Transition
{
get { return this.GetValue(TransitionProperty); }
set { this.SetValue(TransitionProperty, value); }
get { return GetValue(TransitionProperty); }
set { SetValue(TransitionProperty, value); }
}
/// <inheritdoc/>

24
src/Perspex.Controls/Decorator.cs

@ -35,8 +35,8 @@ namespace Perspex.Controls
/// </summary>
public Control Child
{
get { return this.GetValue(ChildProperty); }
set { this.SetValue(ChildProperty, value); }
get { return GetValue(ChildProperty); }
set { SetValue(ChildProperty, value); }
}
/// <summary>
@ -44,15 +44,15 @@ namespace Perspex.Controls
/// </summary>
public Thickness Padding
{
get { return this.GetValue(PaddingProperty); }
set { this.SetValue(PaddingProperty, value); }
get { return GetValue(PaddingProperty); }
set { SetValue(PaddingProperty, value); }
}
/// <inheritdoc/>
protected override Size MeasureOverride(Size availableSize)
{
var content = this.Child;
var padding = this.Padding;
var content = Child;
var padding = Padding;
if (content != null)
{
@ -68,11 +68,11 @@ namespace Perspex.Controls
/// <inheritdoc/>
protected override Size ArrangeOverride(Size finalSize)
{
Control content = this.Child;
Control content = Child;
if (content != null)
{
content.Arrange(new Rect(finalSize).Deflate(this.Padding));
content.Arrange(new Rect(finalSize).Deflate(Padding));
}
return finalSize;
@ -90,14 +90,14 @@ namespace Perspex.Controls
if (oldChild != null)
{
((ISetLogicalParent)oldChild).SetParent(null);
this.LogicalChildren.Clear();
this.RemoveVisualChild(oldChild);
LogicalChildren.Clear();
RemoveVisualChild(oldChild);
}
if (newChild != null)
{
this.AddVisualChild(newChild);
this.LogicalChildren.Add(newChild);
AddVisualChild(newChild);
LogicalChildren.Add(newChild);
((ISetLogicalParent)newChild).SetParent(this);
}
}

4
src/Perspex.Controls/DefinitionBase.cs

@ -19,8 +19,8 @@ namespace Perspex.Controls
/// </summary>
public string SharedSizeGroup
{
get { return this.GetValue(SharedSizeGroupProperty); }
set { this.SetValue(SharedSizeGroupProperty, value); }
get { return GetValue(SharedSizeGroupProperty); }
set { SetValue(SharedSizeGroupProperty, value); }
}
}
}

44
src/Perspex.Controls/DropDown.cs

@ -41,37 +41,37 @@ namespace Perspex.Controls
public DropDown()
{
this.Bind(ContentProperty, this.GetObservable(DropDown.SelectedItemProperty));
Bind(ContentProperty, GetObservable(SelectedItemProperty));
}
public object Content
{
get { return this.GetValue(ContentProperty); }
set { this.SetValue(ContentProperty, value); }
get { return GetValue(ContentProperty); }
set { SetValue(ContentProperty, value); }
}
public HorizontalAlignment HorizontalContentAlignment
{
get { return this.GetValue(HorizontalContentAlignmentProperty); }
set { this.SetValue(HorizontalContentAlignmentProperty, value); }
get { return GetValue(HorizontalContentAlignmentProperty); }
set { SetValue(HorizontalContentAlignmentProperty, value); }
}
public VerticalAlignment VerticalContentAlignment
{
get { return this.GetValue(VerticalContentAlignmentProperty); }
set { this.SetValue(VerticalContentAlignmentProperty, value); }
get { return GetValue(VerticalContentAlignmentProperty); }
set { SetValue(VerticalContentAlignmentProperty, value); }
}
public bool IsDropDownOpen
{
get { return this.GetValue(IsDropDownOpenProperty); }
set { this.SetValue(IsDropDownOpenProperty, value); }
get { return GetValue(IsDropDownOpenProperty); }
set { SetValue(IsDropDownOpenProperty, value); }
}
public object SelectionBoxItem
{
get { return this.GetValue(SelectionBoxItemProperty); }
set { this.SetValue(SelectionBoxItemProperty, value); }
get { return GetValue(SelectionBoxItemProperty); }
set { SetValue(SelectionBoxItemProperty, value); }
}
protected override IItemContainerGenerator CreateItemContainerGenerator()
@ -88,12 +88,12 @@ namespace Perspex.Controls
if (e.Key == Key.F4 ||
(e.Key == Key.Down && ((e.Modifiers & ModifierKeys.Alt) != 0)))
{
this.IsDropDownOpen = !this.IsDropDownOpen;
IsDropDownOpen = !IsDropDownOpen;
e.Handled = true;
}
else if (this.IsDropDownOpen && (e.Key == Key.Escape || e.Key == Key.Enter))
else if (IsDropDownOpen && (e.Key == Key.Escape || e.Key == Key.Enter))
{
this.IsDropDownOpen = false;
IsDropDownOpen = false;
e.Handled = true;
}
}
@ -101,11 +101,11 @@ namespace Perspex.Controls
protected override void OnPointerPressed(PointerPressEventArgs e)
{
if (!this.IsDropDownOpen)
if (!IsDropDownOpen)
{
if (((IVisual)e.Source).GetVisualAncestors().Last().GetType() != typeof(PopupRoot))
{
this.IsDropDownOpen = true;
IsDropDownOpen = true;
}
}
@ -116,20 +116,20 @@ namespace Perspex.Controls
{
if (_popup != null)
{
_popup.Opened -= this.PopupOpened;
_popup.Opened -= PopupOpened;
}
_popup = this.GetTemplateChild<Popup>("popup");
_popup.Opened += this.PopupOpened;
_popup.Opened += PopupOpened;
}
private void PopupOpened(object sender, EventArgs e)
{
var selectedIndex = this.SelectedIndex;
var selectedIndex = SelectedIndex;
if (selectedIndex != -1)
{
var container = this.ItemContainerGenerator.ContainerFromIndex(selectedIndex);
var container = ItemContainerGenerator.ContainerFromIndex(selectedIndex);
container.Focus();
}
}
@ -140,7 +140,7 @@ namespace Perspex.Controls
if (control != null)
{
this.SelectionBoxItem = new Rectangle
SelectionBoxItem = new Rectangle
{
Width = control.DesiredSize.Width,
Height = control.DesiredSize.Height,
@ -154,7 +154,7 @@ namespace Perspex.Controls
}
else
{
this.SelectionBoxItem = e.NewValue;
SelectionBoxItem = e.NewValue;
}
}
}

8
src/Perspex.Controls/Generators/ItemContainerGenerator.cs

@ -25,7 +25,7 @@ namespace Perspex.Controls.Generators
/// <param name="owner">The owner control.</param>
public ItemContainerGenerator(IControl owner)
{
this.Owner = owner;
Owner = owner;
}
/// <summary>
@ -59,11 +59,11 @@ namespace Perspex.Controls.Generators
foreach (var item in items)
{
IControl container = this.CreateContainer(item, itemTemplate);
IControl container = CreateContainer(item, itemTemplate);
result.Add(container);
}
this.AddContainers(startingIndex, result);
AddContainers(startingIndex, result);
_containersInitialized.OnNext(new ItemContainers(startingIndex, result));
return result.Where(x => x != null).ToList();
@ -157,7 +157,7 @@ namespace Perspex.Controls.Generators
}
else
{
return this.Owner.MaterializeDataTemplate(item);
return Owner.MaterializeDataTemplate(item);
}
}

2
src/Perspex.Controls/Generators/ItemContainerGenerator`1.cs

@ -28,7 +28,7 @@ namespace Perspex.Controls.Generators
if (result == null)
{
result = new T();
result.Content = this.Owner.MaterializeDataTemplate(item);
result.Content = Owner.MaterializeDataTemplate(item);
}
return result;

4
src/Perspex.Controls/Generators/ItemContainers.cs

@ -17,8 +17,8 @@ namespace Perspex.Controls.Generators
/// <param name="containers">The containers.</param>
public ItemContainers(int startingIndex, IList<IControl> containers)
{
this.StartingIndex = startingIndex;
this.Items = containers;
StartingIndex = startingIndex;
Items = containers;
}
/// <summary>

12
src/Perspex.Controls/Generators/TreeItemContainerGenerator.cs

@ -26,7 +26,7 @@ namespace Perspex.Controls.Generators
/// <param name="owner">The owner control.</param>
public TreeItemContainerGenerator(IControl owner)
{
this.Owner = owner;
Owner = owner;
}
/// <summary>
@ -57,7 +57,7 @@ namespace Perspex.Controls.Generators
foreach (var item in items)
{
var container = this.CreateContainer(item, itemTemplate);
var container = CreateContainer(item, itemTemplate);
_containers.Add(item, container);
result.Add(container);
}
@ -85,7 +85,7 @@ namespace Perspex.Controls.Generators
if (_containers.TryGetValue(item, out container))
{
this.Remove(container, result);
Remove(container, result);
}
}
@ -164,7 +164,7 @@ namespace Perspex.Controls.Generators
if (result == null)
{
var template = this.GetTreeDataTemplate(item);
var template = GetTreeDataTemplate(item);
result = new T
{
@ -185,7 +185,7 @@ namespace Perspex.Controls.Generators
/// <returns>The template.</returns>
private ITreeDataTemplate GetTreeDataTemplate(object item)
{
IDataTemplate template = this.Owner.FindDataTemplate(item);
IDataTemplate template = Owner.FindDataTemplate(item);
if (template == null)
{
@ -212,7 +212,7 @@ namespace Perspex.Controls.Generators
if (_containers.TryGetValue(childItem, out childContainer))
{
this.Remove(childContainer, removed);
Remove(childContainer, removed);
}
}
}

114
src/Perspex.Controls/Grid.cs

@ -54,7 +54,7 @@ namespace Perspex.Controls
{
if (_columnDefinitions == null)
{
this.ColumnDefinitions = new ColumnDefinitions();
ColumnDefinitions = new ColumnDefinitions();
}
return _columnDefinitions;
@ -68,7 +68,7 @@ namespace Perspex.Controls
}
_columnDefinitions = value;
_columnDefinitions.TrackItemPropertyChanged(_ => this.InvalidateMeasure());
_columnDefinitions.TrackItemPropertyChanged(_ => InvalidateMeasure());
}
}
@ -81,7 +81,7 @@ namespace Perspex.Controls
{
if (_rowDefinitions == null)
{
this.RowDefinitions = new RowDefinitions();
RowDefinitions = new RowDefinitions();
}
return _rowDefinitions;
@ -95,7 +95,7 @@ namespace Perspex.Controls
}
_rowDefinitions = value;
_rowDefinitions.TrackItemPropertyChanged(_ => this.InvalidateMeasure());
_rowDefinitions.TrackItemPropertyChanged(_ => InvalidateMeasure());
}
}
@ -187,13 +187,13 @@ namespace Perspex.Controls
protected override Size MeasureOverride(Size constraint)
{
Size totalSize = constraint;
int colCount = this.ColumnDefinitions.Count;
int rowCount = this.RowDefinitions.Count;
int colCount = ColumnDefinitions.Count;
int rowCount = RowDefinitions.Count;
double totalStarsX = 0;
double totalStarsY = 0;
bool emptyRows = rowCount == 0;
bool emptyCols = colCount == 0;
bool hasChildren = this.Children.Count > 0;
bool hasChildren = Children.Count > 0;
if (emptyRows)
{
@ -205,7 +205,7 @@ namespace Perspex.Controls
colCount = 1;
}
this.CreateMatrices(rowCount, colCount);
CreateMatrices(rowCount, colCount);
if (emptyRows)
{
@ -217,7 +217,7 @@ namespace Perspex.Controls
{
for (int i = 0; i < rowCount; i++)
{
RowDefinition rowdef = this.RowDefinitions[i];
RowDefinition rowdef = RowDefinitions[i];
GridLength height = rowdef.Height;
rowdef.ActualHeight = double.PositiveInfinity;
@ -252,7 +252,7 @@ namespace Perspex.Controls
{
for (int i = 0; i < colCount; i++)
{
ColumnDefinition coldef = this.ColumnDefinitions[i];
ColumnDefinition coldef = ColumnDefinitions[i];
GridLength width = coldef.Width;
coldef.ActualWidth = double.PositiveInfinity;
@ -301,11 +301,11 @@ namespace Perspex.Controls
if (hasChildren)
{
this.ExpandStarCols(totalSize);
this.ExpandStarRows(totalSize);
ExpandStarCols(totalSize);
ExpandStarRows(totalSize);
}
foreach (Control child in this.Children)
foreach (Control child in Children)
{
int col, row;
int colspan, rowspan;
@ -445,7 +445,7 @@ namespace Perspex.Controls
{
node = sizes.Last();
node.Matrix[node.Row, node.Column].DesiredSize = Math.Max(node.Matrix[node.Row, node.Column].DesiredSize, node.Size);
this.AllocateDesiredSize(rowCount, colCount);
AllocateDesiredSize(rowCount, colCount);
sizes.Remove(node);
}
@ -455,7 +455,7 @@ namespace Perspex.Controls
// Once we have measured and distributed all sizes, we have to store
// the results. Every time we want to expand the rows/cols, this will
// be used as the baseline.
this.SaveMeasureResults();
SaveMeasureResults();
sizes.Remove(separator);
@ -482,12 +482,12 @@ namespace Perspex.Controls
/// <returns>The space taken.</returns>
protected override Size ArrangeOverride(Size finalSize)
{
int colCount = this.ColumnDefinitions.Count;
int rowCount = this.RowDefinitions.Count;
int colCount = ColumnDefinitions.Count;
int rowCount = RowDefinitions.Count;
int colMatrixDim = _colMatrix.GetLength(0);
int rowMatrixDim = _rowMatrix.GetLength(0);
this.RestoreMeasureResults();
RestoreMeasureResults();
double totalConsumedX = 0;
double totalConsumedY = 0;
@ -506,25 +506,25 @@ namespace Perspex.Controls
if (totalConsumedX != finalSize.Width)
{
this.ExpandStarCols(finalSize);
ExpandStarCols(finalSize);
}
if (totalConsumedY != finalSize.Height)
{
this.ExpandStarRows(finalSize);
ExpandStarRows(finalSize);
}
for (int c = 0; c < colCount; c++)
{
this.ColumnDefinitions[c].ActualWidth = _colMatrix[c, c].OfferedSize;
ColumnDefinitions[c].ActualWidth = _colMatrix[c, c].OfferedSize;
}
for (int r = 0; r < rowCount; r++)
{
this.RowDefinitions[r].ActualHeight = _rowMatrix[r, r].OfferedSize;
RowDefinitions[r].ActualHeight = _rowMatrix[r, r].OfferedSize;
}
foreach (Control child in this.Children)
foreach (Control child in Children)
{
int col = Math.Min(GetColumn(child), colMatrixDim - 1);
int row = Math.Min(GetRow(child), rowMatrixDim - 1);
@ -592,7 +592,7 @@ namespace Perspex.Controls
private void ExpandStarCols(Size availableSize)
{
int matrixCount = _colMatrix.GetLength(0);
int columnsCount = this.ColumnDefinitions.Count;
int columnsCount = ColumnDefinitions.Count;
double width = availableSize.Width;
for (int i = 0; i < matrixCount; i++)
@ -607,7 +607,7 @@ namespace Perspex.Controls
}
}
this.AssignSize(_colMatrix, 0, matrixCount - 1, ref width, GridUnitType.Star, false);
AssignSize(_colMatrix, 0, matrixCount - 1, ref width, GridUnitType.Star, false);
width = Math.Max(0, width);
if (columnsCount > 0)
@ -616,7 +616,7 @@ namespace Perspex.Controls
{
if (_colMatrix[i, i].Type == GridUnitType.Star)
{
this.ColumnDefinitions[i].ActualWidth = _colMatrix[i, i].OfferedSize;
ColumnDefinitions[i].ActualWidth = _colMatrix[i, i].OfferedSize;
}
}
}
@ -625,7 +625,7 @@ namespace Perspex.Controls
private void ExpandStarRows(Size availableSize)
{
int matrixCount = _rowMatrix.GetLength(0);
int rowCount = this.RowDefinitions.Count;
int rowCount = RowDefinitions.Count;
double height = availableSize.Height;
// When expanding star rows, we need to zero out their height before
@ -643,7 +643,7 @@ namespace Perspex.Controls
}
}
this.AssignSize(_rowMatrix, 0, matrixCount - 1, ref height, GridUnitType.Star, false);
AssignSize(_rowMatrix, 0, matrixCount - 1, ref height, GridUnitType.Star, false);
if (rowCount > 0)
{
@ -651,7 +651,7 @@ namespace Perspex.Controls
{
if (_rowMatrix[i, i].Type == GridUnitType.Star)
{
this.RowDefinitions[i].ActualHeight = _rowMatrix[i, i].OfferedSize;
RowDefinitions[i].ActualHeight = _rowMatrix[i, i].OfferedSize;
}
}
}
@ -757,12 +757,12 @@ namespace Perspex.Controls
if (spansStar)
{
this.AssignSize(matrix, col, row, ref additional, GridUnitType.Star, true);
AssignSize(matrix, col, row, ref additional, GridUnitType.Star, true);
}
else
{
this.AssignSize(matrix, col, row, ref additional, GridUnitType.Pixel, true);
this.AssignSize(matrix, col, row, ref additional, GridUnitType.Auto, true);
AssignSize(matrix, col, row, ref additional, GridUnitType.Pixel, true);
AssignSize(matrix, col, row, ref additional, GridUnitType.Auto, true);
}
}
}
@ -839,21 +839,21 @@ namespace Perspex.Controls
public Segment(double offeredSize, double min, double max, GridUnitType type)
{
this.OriginalSize = 0;
this.Min = min;
this.Max = max;
this.DesiredSize = 0;
this.OfferedSize = offeredSize;
this.Stars = 0;
this.Type = type;
OriginalSize = 0;
Min = min;
Max = max;
DesiredSize = 0;
OfferedSize = offeredSize;
Stars = 0;
Type = type;
}
public void Init(double offeredSize, double min, double max, GridUnitType type)
{
this.OfferedSize = offeredSize;
this.Min = min;
this.Max = max;
this.Type = type;
OfferedSize = offeredSize;
Min = min;
Max = max;
Type = type;
}
}
@ -866,10 +866,10 @@ namespace Perspex.Controls
public GridNode(Segment[,] matrix, int row, int col, double size)
{
this.Matrix = matrix;
this.Row = row;
this.Column = col;
this.Size = size;
Matrix = matrix;
Row = row;
Column = col;
Size = size;
}
}
@ -887,10 +887,10 @@ namespace Perspex.Controls
bool autoCol = false;
bool autoRow = false;
int col = Math.Min(Grid.GetColumn(child), colMatrixDim - 1);
int row = Math.Min(Grid.GetRow(child), rowMatrixDim - 1);
int colspan = Math.Min(Grid.GetColumnSpan(child), colMatrixDim - 1);
int rowspan = Math.Min(Grid.GetRowSpan(child), rowMatrixDim - 1);
int col = Math.Min(GetColumn(child), colMatrixDim - 1);
int row = Math.Min(GetRow(child), rowMatrixDim - 1);
int colspan = Math.Min(GetColumnSpan(child), colMatrixDim - 1);
int rowspan = Math.Min(GetRowSpan(child), rowMatrixDim - 1);
for (int r = row; r < row + rowspan; r++)
{
@ -904,17 +904,17 @@ namespace Perspex.Controls
autoCol |= colMatrix[c, c].Type == GridUnitType.Auto;
}
this.HasAutoAuto |= autoRow && autoCol && !starRow && !starCol;
this.HasStarAuto |= starRow && autoCol;
this.HasAutoStar |= autoRow && starCol;
HasAutoAuto |= autoRow && autoCol && !starRow && !starCol;
HasStarAuto |= starRow && autoCol;
HasAutoStar |= autoRow && starCol;
}
}
public bool HasAutoAuto { get; private set; }
public bool HasAutoAuto { get; }
public bool HasStarAuto { get; private set; }
public bool HasStarAuto { get; }
public bool HasAutoStar { get; private set; }
public bool HasAutoStar { get; }
}
}
}

6
src/Perspex.Controls/GridLength.cs

@ -183,13 +183,13 @@ namespace Perspex.Controls
/// <returns>The string representation.</returns>
public override string ToString()
{
if (this.IsAuto)
if (IsAuto)
{
return "Auto";
}
string s = _value.ToString();
return this.IsStar ? s + "*" : s;
return IsStar ? s + "*" : s;
}
/// <summary>
@ -203,7 +203,7 @@ namespace Perspex.Controls
if (s == "AUTO")
{
return GridLength.Auto;
return Auto;
}
else if (s.EndsWith("*"))
{

4
src/Perspex.Controls/GridSplitter.cs

@ -18,12 +18,12 @@ namespace Perspex.Controls
/// </summary>
public GridSplitter()
{
this.Cursor = new Cursor(StandardCursorType.SizeWestEast);
Cursor = new Cursor(StandardCursorType.SizeWestEast);
}
protected override void OnDragDelta(VectorEventArgs e)
{
int col = this.GetValue(Grid.ColumnProperty);
int col = GetValue(Grid.ColumnProperty);
if (_grid != null && col > 0)
{

30
src/Perspex.Controls/Image.cs

@ -29,8 +29,8 @@ namespace Perspex.Controls
/// </summary>
public Bitmap Source
{
get { return this.GetValue(SourceProperty); }
set { this.SetValue(SourceProperty, value); }
get { return GetValue(SourceProperty); }
set { SetValue(SourceProperty, value); }
}
/// <summary>
@ -38,8 +38,8 @@ namespace Perspex.Controls
/// </summary>
public Stretch Stretch
{
get { return (Stretch)this.GetValue(StretchProperty); }
set { this.SetValue(StretchProperty, value); }
get { return (Stretch)GetValue(StretchProperty); }
set { SetValue(StretchProperty, value); }
}
/// <summary>
@ -48,13 +48,13 @@ namespace Perspex.Controls
/// <param name="context">The drawing context.</param>
public override void Render(IDrawingContext context)
{
Bitmap source = this.Source;
Bitmap source = Source;
if (source != null)
{
Rect viewPort = new Rect(this.Bounds.Size);
Rect viewPort = new Rect(Bounds.Size);
Size sourceSize = new Size(source.PixelWidth, source.PixelHeight);
Vector scale = this.Stretch.CalculateScaling(this.Bounds.Size, sourceSize);
Vector scale = Stretch.CalculateScaling(Bounds.Size, sourceSize);
Size scaledSize = sourceSize * scale;
Rect destRect = viewPort
.CenterIn(new Rect(scaledSize))
@ -77,22 +77,22 @@ namespace Perspex.Controls
double height = 0;
Vector scale = new Vector();
if (this.Source != null)
if (Source != null)
{
width = this.Source.PixelWidth;
height = this.Source.PixelHeight;
width = Source.PixelWidth;
height = Source.PixelHeight;
if (this.Width > 0)
if (Width > 0)
{
availableSize = new Size(this.Width, availableSize.Height);
availableSize = new Size(Width, availableSize.Height);
}
if (this.Height > 0)
if (Height > 0)
{
availableSize = new Size(availableSize.Width, this.Height);
availableSize = new Size(availableSize.Width, Height);
}
scale = this.Stretch.CalculateScaling(availableSize, new Size(width, height));
scale = Stretch.CalculateScaling(availableSize, new Size(width, height));
}
return new Size(width * scale.X, height * scale.Y);

30
src/Perspex.Controls/ItemsControl.cs

@ -56,8 +56,8 @@ namespace Perspex.Controls
/// </summary>
public ItemsControl()
{
this.Classes.Add(":empty");
this.Items = new PerspexList<object>();
Classes.Add(":empty");
Items = new PerspexList<object>();
}
/// <summary>
@ -69,7 +69,7 @@ namespace Perspex.Controls
{
if (_itemContainerGenerator == null)
{
_itemContainerGenerator = this.CreateItemContainerGenerator();
_itemContainerGenerator = CreateItemContainerGenerator();
}
return _itemContainerGenerator;
@ -81,8 +81,8 @@ namespace Perspex.Controls
/// </summary>
public IEnumerable Items
{
get { return this.GetValue(ItemsProperty); }
set { this.SetValue(ItemsProperty, value); }
get { return GetValue(ItemsProperty); }
set { SetValue(ItemsProperty, value); }
}
/// <summary>
@ -90,8 +90,8 @@ namespace Perspex.Controls
/// </summary>
public ITemplate<IPanel> ItemsPanel
{
get { return this.GetValue(ItemsPanelProperty); }
set { this.SetValue(ItemsPanelProperty, value); }
get { return GetValue(ItemsPanelProperty); }
set { SetValue(ItemsPanelProperty, value); }
}
/// <summary>
@ -106,7 +106,7 @@ namespace Perspex.Controls
/// <inheritdoc/>
IPerspexList<ILogical> IReparentingHost.LogicalChildren
{
get { return this.LogicalChildren; }
get { return LogicalChildren; }
}
/// <summary>
@ -134,7 +134,7 @@ namespace Perspex.Controls
/// <inheritdoc/>
protected override void OnTemplateApplied()
{
this.Presenter = this.FindTemplateChild<IItemsPresenter>("itemsPresenter");
Presenter = this.FindTemplateChild<IItemsPresenter>("itemsPresenter");
}
/// <summary>
@ -147,25 +147,25 @@ namespace Perspex.Controls
if (incc != null)
{
incc.CollectionChanged += this.ItemsCollectionChanged;
incc.CollectionChanged += ItemsCollectionChanged;
}
var newValue = e.NewValue as IEnumerable;
if (newValue == null || newValue.Count() == 0)
{
this.Classes.Add(":empty");
Classes.Add(":empty");
}
else
{
this.Classes.Remove(":empty");
Classes.Remove(":empty");
}
incc = newValue as INotifyCollectionChanged;
if (incc != null)
{
incc.CollectionChanged += this.ItemsCollectionChanged;
incc.CollectionChanged += ItemsCollectionChanged;
}
}
@ -181,11 +181,11 @@ namespace Perspex.Controls
if (collection.Count == 0)
{
this.Classes.Add(":empty");
Classes.Add(":empty");
}
else
{
this.Classes.Remove(":empty");
Classes.Remove(":empty");
}
}
}

4
src/Perspex.Controls/ListBoxItem.cs

@ -30,8 +30,8 @@ namespace Perspex.Controls
/// </summary>
public bool IsSelected
{
get { return this.GetValue(IsSelectedProperty); }
set { this.SetValue(IsSelectedProperty, value); }
get { return GetValue(IsSelectedProperty); }
set { SetValue(IsSelectedProperty, value); }
}
}
}

42
src/Perspex.Controls/Menu.cs

@ -50,8 +50,8 @@ namespace Perspex.Controls
/// </summary>
public bool IsOpen
{
get { return this.GetValue(IsOpenProperty); }
private set { this.SetValue(IsOpenProperty, value); }
get { return GetValue(IsOpenProperty); }
private set { SetValue(IsOpenProperty, value); }
}
/// <summary>
@ -61,9 +61,9 @@ namespace Perspex.Controls
{
get
{
var index = this.SelectedIndex;
var index = SelectedIndex;
return (index != -1) ?
(MenuItem)this.ItemContainerGenerator.ContainerFromIndex(index) :
(MenuItem)ItemContainerGenerator.ContainerFromIndex(index) :
null;
}
}
@ -78,8 +78,8 @@ namespace Perspex.Controls
i.IsSubMenuOpen = false;
}
this.IsOpen = false;
this.SelectedIndex = -1;
IsOpen = false;
SelectedIndex = -1;
}
/// <summary>
@ -87,9 +87,9 @@ namespace Perspex.Controls
/// </summary>
public void Open()
{
this.SelectedIndex = 0;
this.SelectedMenuItem.Focus();
this.IsOpen = true;
SelectedIndex = 0;
SelectedMenuItem.Focus();
IsOpen = true;
}
/// <summary>
@ -102,16 +102,16 @@ namespace Perspex.Controls
var topLevel = root as TopLevel;
topLevel.Deactivated += this.Deactivated;
topLevel.Deactivated += Deactivated;
var pointerPress = topLevel.AddHandler(
InputElement.PointerPressedEvent,
this.TopLevelPreviewPointerPress,
PointerPressedEvent,
TopLevelPreviewPointerPress,
RoutingStrategies.Tunnel);
_subscription = new CompositeDisposable(
pointerPress,
Disposable.Create(() => topLevel.Deactivated -= this.Deactivated));
Disposable.Create(() => topLevel.Deactivated -= Deactivated));
var inputRoot = root as IInputRoot;
@ -137,7 +137,7 @@ namespace Perspex.Controls
/// <param name="e">The event args.</param>
protected override void OnKeyDown(KeyEventArgs e)
{
bool menuWasOpen = this.SelectedMenuItem?.IsSubMenuOpen ?? false;
bool menuWasOpen = SelectedMenuItem?.IsSubMenuOpen ?? false;
base.OnKeyDown(e);
@ -145,7 +145,7 @@ namespace Perspex.Controls
{
// If a menu item was open and we navigate to a new one with the arrow keys, open
// that menu and select the first item.
var selection = this.SelectedMenuItem;
var selection = SelectedMenuItem;
if (selection != null && !selection.IsSubMenuOpen)
{
@ -162,7 +162,7 @@ namespace Perspex.Controls
protected override void OnLostFocus(RoutedEventArgs e)
{
base.OnLostFocus(e);
this.SelectedItem = null;
SelectedItem = null;
}
/// <summary>
@ -184,7 +184,7 @@ namespace Perspex.Controls
}
}
this.IsOpen = true;
IsOpen = true;
}
/// <summary>
@ -194,7 +194,7 @@ namespace Perspex.Controls
/// <param name="e">The event args.</param>
private void Deactivated(object sender, EventArgs e)
{
this.Close();
Close();
}
/// <summary>
@ -203,7 +203,7 @@ namespace Perspex.Controls
/// <param name="e">The event args.</param>
private void OnMenuClick(RoutedEventArgs e)
{
this.Close();
Close();
FocusManager.Instance.Focus(null);
e.Handled = true;
}
@ -215,13 +215,13 @@ namespace Perspex.Controls
/// <param name="e">The event args.</param>
private void TopLevelPreviewPointerPress(object sender, PointerPressEventArgs e)
{
if (this.IsOpen)
if (IsOpen)
{
var control = e.Source as ILogical;
if (!this.IsLogicalParentOf(control))
{
this.Close();
Close();
}
}
}

116
src/Perspex.Controls/MenuItem.cs

@ -109,8 +109,8 @@ namespace Perspex.Controls
/// </summary>
public event EventHandler<RoutedEventArgs> Click
{
add { this.AddHandler(ClickEvent, value); }
remove { this.RemoveHandler(ClickEvent, value); }
add { AddHandler(ClickEvent, value); }
remove { RemoveHandler(ClickEvent, value); }
}
/// <summary>
@ -118,8 +118,8 @@ namespace Perspex.Controls
/// </summary>
public event EventHandler<RoutedEventArgs> SubmenuOpened
{
add { this.AddHandler(SubmenuOpenedEvent, value); }
remove { this.RemoveHandler(SubmenuOpenedEvent, value); }
add { AddHandler(SubmenuOpenedEvent, value); }
remove { RemoveHandler(SubmenuOpenedEvent, value); }
}
/// <summary>
@ -127,8 +127,8 @@ namespace Perspex.Controls
/// </summary>
public ICommand Command
{
get { return this.GetValue(CommandProperty); }
set { this.SetValue(CommandProperty, value); }
get { return GetValue(CommandProperty); }
set { SetValue(CommandProperty, value); }
}
/// <summary>
@ -137,8 +137,8 @@ namespace Perspex.Controls
/// </summary>
public object CommandParameter
{
get { return this.GetValue(CommandParameterProperty); }
set { this.SetValue(CommandParameterProperty, value); }
get { return GetValue(CommandParameterProperty); }
set { SetValue(CommandParameterProperty, value); }
}
/// <summary>
@ -146,8 +146,8 @@ namespace Perspex.Controls
/// </summary>
public object Header
{
get { return this.GetValue(HeaderProperty); }
set { this.SetValue(HeaderProperty, value); }
get { return GetValue(HeaderProperty); }
set { SetValue(HeaderProperty, value); }
}
/// <summary>
@ -155,8 +155,8 @@ namespace Perspex.Controls
/// </summary>
public object Icon
{
get { return this.GetValue(IconProperty); }
set { this.SetValue(IconProperty, value); }
get { return GetValue(IconProperty); }
set { SetValue(IconProperty, value); }
}
/// <summary>
@ -164,8 +164,8 @@ namespace Perspex.Controls
/// </summary>
public bool IsSelected
{
get { return this.GetValue(IsSelectedProperty); }
set { this.SetValue(IsSelectedProperty, value); }
get { return GetValue(IsSelectedProperty); }
set { SetValue(IsSelectedProperty, value); }
}
/// <summary>
@ -174,8 +174,8 @@ namespace Perspex.Controls
/// </summary>
public bool IsSubMenuOpen
{
get { return this.GetValue(IsSubMenuOpenProperty); }
set { this.SetValue(IsSubMenuOpenProperty, value); }
get { return GetValue(IsSubMenuOpenProperty); }
set { SetValue(IsSubMenuOpenProperty, value); }
}
/// <summary>
@ -183,7 +183,7 @@ namespace Perspex.Controls
/// </summary>
public bool HasSubMenu
{
get { return !this.Classes.Contains(":empty"); }
get { return !Classes.Contains(":empty"); }
}
/// <summary>
@ -191,7 +191,7 @@ namespace Perspex.Controls
/// </summary>
public bool IsTopLevel
{
get { return this.Parent is Menu; }
get { return Parent is Menu; }
}
/// <summary>
@ -200,9 +200,9 @@ namespace Perspex.Controls
/// <param name="e">The click event args.</param>
protected virtual void OnClick(RoutedEventArgs e)
{
if (this.Command != null)
if (Command != null)
{
this.Command.Execute(this.CommandParameter);
Command.Execute(CommandParameter);
}
}
@ -213,7 +213,7 @@ namespace Perspex.Controls
protected override void OnGotFocus(GotFocusEventArgs e)
{
base.OnGotFocus(e);
this.IsSelected = true;
IsSelected = true;
}
/// <summary>
@ -231,43 +231,43 @@ namespace Perspex.Controls
switch (e.Key)
{
case Key.Left:
if (!this.IsTopLevel && this.IsSubMenuOpen)
if (!IsTopLevel && IsSubMenuOpen)
{
this.IsSubMenuOpen = false;
IsSubMenuOpen = false;
e.Handled = true;
}
passStraightToParent = this.IsTopLevel || !this.IsSubMenuOpen;
passStraightToParent = IsTopLevel || !IsSubMenuOpen;
break;
case Key.Right:
if (!this.IsTopLevel && this.HasSubMenu && !this.IsSubMenuOpen)
if (!IsTopLevel && HasSubMenu && !IsSubMenuOpen)
{
this.SelectedIndex = 0;
this.IsSubMenuOpen = true;
SelectedIndex = 0;
IsSubMenuOpen = true;
e.Handled = true;
}
passStraightToParent = this.IsTopLevel || !this.IsSubMenuOpen;
passStraightToParent = IsTopLevel || !IsSubMenuOpen;
break;
case Key.Enter:
if (this.HasSubMenu)
if (HasSubMenu)
{
goto case Key.Right;
}
else
{
this.RaiseEvent(new RoutedEventArgs(ClickEvent));
RaiseEvent(new RoutedEventArgs(ClickEvent));
e.Handled = true;
}
break;
case Key.Escape:
if (this.IsSubMenuOpen)
if (IsSubMenuOpen)
{
this.IsSubMenuOpen = false;
IsSubMenuOpen = false;
e.Handled = true;
}
@ -288,19 +288,19 @@ namespace Perspex.Controls
{
base.OnPointerEnter(e);
var menu = this.Parent as Menu;
var menu = Parent as Menu;
if (menu != null)
{
if (menu.IsOpen)
{
this.IsSubMenuOpen = true;
IsSubMenuOpen = true;
}
}
else if (this.HasSubMenu && !this.IsSubMenuOpen)
else if (HasSubMenu && !IsSubMenuOpen)
{
_submenuTimer = DispatcherTimer.Run(
() => this.IsSubMenuOpen = true,
() => IsSubMenuOpen = true,
TimeSpan.FromMilliseconds(400));
}
}
@ -328,17 +328,17 @@ namespace Perspex.Controls
{
base.OnPointerPressed(e);
if (!this.HasSubMenu)
if (!HasSubMenu)
{
this.RaiseEvent(new RoutedEventArgs(ClickEvent));
RaiseEvent(new RoutedEventArgs(ClickEvent));
}
else if (this.IsTopLevel)
else if (IsTopLevel)
{
this.IsSubMenuOpen = !this.IsSubMenuOpen;
IsSubMenuOpen = !IsSubMenuOpen;
}
else
{
this.IsSubMenuOpen = true;
IsSubMenuOpen = true;
}
e.Handled = true;
@ -354,7 +354,7 @@ namespace Perspex.Controls
if (menuItem != null && menuItem.Parent == this)
{
foreach (var child in this.Items.OfType<MenuItem>())
foreach (var child in Items.OfType<MenuItem>())
{
if (child != menuItem && child.IsSubMenuOpen)
{
@ -373,9 +373,9 @@ namespace Perspex.Controls
_popup = this.GetTemplateChild<Popup>("popup");
_popup.DependencyResolver = DependencyResolver.Instance;
_popup.PopupRootCreated += this.PopupRootCreated;
_popup.Opened += this.PopupOpened;
_popup.Closed += this.PopupClosed;
_popup.PopupRootCreated += PopupRootCreated;
_popup.Opened += PopupOpened;
_popup.Closed += PopupClosed;
}
/// <summary>
@ -384,14 +384,14 @@ namespace Perspex.Controls
/// <param name="e">The event args.</param>
private void AccessKeyPressed(RoutedEventArgs e)
{
if (this.HasSubMenu)
if (HasSubMenu)
{
this.SelectedIndex = 0;
this.IsSubMenuOpen = true;
SelectedIndex = 0;
IsSubMenuOpen = true;
}
else
{
this.RaiseEvent(new RoutedEventArgs(ClickEvent));
RaiseEvent(new RoutedEventArgs(ClickEvent));
}
e.Handled = true;
@ -402,7 +402,7 @@ namespace Perspex.Controls
/// </summary>
private void CloseSubmenus()
{
foreach (var child in this.Items.OfType<MenuItem>())
foreach (var child in Items.OfType<MenuItem>())
{
child.IsSubMenuOpen = false;
}
@ -418,13 +418,13 @@ namespace Perspex.Controls
if (value)
{
this.RaiseEvent(new RoutedEventArgs(SubmenuOpenedEvent));
this.IsSelected = true;
RaiseEvent(new RoutedEventArgs(SubmenuOpenedEvent));
IsSelected = true;
}
else
{
this.CloseSubmenus();
this.SelectedIndex = -1;
CloseSubmenus();
SelectedIndex = -1;
}
}
@ -458,7 +458,7 @@ namespace Perspex.Controls
// The presenter was found. Set its TemplatedParent so it thinks that it had a
// normal birth; may it never know its own perveristy.
presenter.TemplatedParent = this;
this.Presenter = presenter;
Presenter = presenter;
}
}
@ -469,11 +469,11 @@ namespace Perspex.Controls
/// <param name="e">The event args.</param>
private void PopupOpened(object sender, EventArgs e)
{
var selected = this.SelectedIndex;
var selected = SelectedIndex;
if (selected != -1)
{
var container = this.ItemContainerGenerator.ContainerFromIndex(selected);
var container = ItemContainerGenerator.ContainerFromIndex(selected);
if (container != null)
{
@ -489,7 +489,7 @@ namespace Perspex.Controls
/// <param name="e">The event args.</param>
private void PopupClosed(object sender, EventArgs e)
{
this.SelectedItem = null;
SelectedItem = null;
}
/// <summary>

2
src/Perspex.Controls/MenuItemAccessKeyHandler.cs

@ -50,7 +50,7 @@ namespace Perspex.Controls
_owner = owner;
_owner.AddHandler(InputElement.TextInputEvent, this.OnTextInput);
_owner.AddHandler(InputElement.TextInputEvent, OnTextInput);
}
/// <summary>

30
src/Perspex.Controls/Panel.cs

@ -27,7 +27,7 @@ namespace Perspex.Controls
/// </summary>
public Panel()
{
_children.CollectionChanged += this.ChildrenChanged;
_children.CollectionChanged += ChildrenChanged;
_childLogicalParent = this;
}
@ -51,7 +51,7 @@ namespace Perspex.Controls
{
Contract.Requires<ArgumentNullException>(value != null);
this.ClearVisualChildren();
ClearVisualChildren();
_children.Clear();
_children.AddRange(value);
}
@ -73,9 +73,9 @@ namespace Perspex.Controls
Contract.Requires<ArgumentNullException>(children != null);
_childLogicalParent = logicalParent;
this.RedirectLogicalChildren(children);
RedirectLogicalChildren(children);
foreach (var control in this.Children)
foreach (var control in Children)
{
((ISetLogicalParent)control).SetParent(null);
((ISetLogicalParent)control).SetParent((IControl)logicalParent);
@ -123,28 +123,28 @@ namespace Perspex.Controls
{
case NotifyCollectionChangedAction.Add:
controls = e.NewItems.OfType<Control>().ToList();
this.SetLogicalParent(controls);
this.AddVisualChildren(e.NewItems.OfType<Visual>());
this.LogicalChildren.InsertRange(e.NewStartingIndex, controls);
SetLogicalParent(controls);
AddVisualChildren(e.NewItems.OfType<Visual>());
LogicalChildren.InsertRange(e.NewStartingIndex, controls);
break;
case NotifyCollectionChangedAction.Remove:
controls = e.OldItems.OfType<Control>().ToList();
this.ClearLogicalParent(e.OldItems.OfType<Control>());
this.LogicalChildren.RemoveAll(controls);
this.RemoveVisualChildren(e.OldItems.OfType<Visual>());
ClearLogicalParent(e.OldItems.OfType<Control>());
LogicalChildren.RemoveAll(controls);
RemoveVisualChildren(e.OldItems.OfType<Visual>());
break;
case NotifyCollectionChangedAction.Reset:
controls = e.OldItems.OfType<Control>().ToList();
this.ClearLogicalParent(controls);
this.LogicalChildren.Clear();
this.ClearVisualChildren();
this.AddVisualChildren(_children);
ClearLogicalParent(controls);
LogicalChildren.Clear();
ClearVisualChildren();
AddVisualChildren(_children);
break;
}
this.InvalidateMeasure();
InvalidateMeasure();
}
}
}

26
src/Perspex.Controls/Presenters/ContentPresenter.cs

@ -38,8 +38,8 @@ namespace Perspex.Controls.Presenters
/// </summary>
public IControl Child
{
get { return this.GetValue(ChildProperty); }
private set { this.SetValue(ChildProperty, value); }
get { return GetValue(ChildProperty); }
private set { SetValue(ChildProperty, value); }
}
/// <summary>
@ -47,8 +47,8 @@ namespace Perspex.Controls.Presenters
/// </summary>
public object Content
{
get { return this.GetValue(ContentProperty); }
set { this.SetValue(ContentProperty, value); }
get { return GetValue(ContentProperty); }
set { SetValue(ContentProperty, value); }
}
/// <inheritdoc/>
@ -56,7 +56,7 @@ namespace Perspex.Controls.Presenters
{
if (!_createdChild)
{
this.CreateChild();
CreateChild();
}
}
@ -69,7 +69,7 @@ namespace Perspex.Controls.Presenters
/// <inheritdoc/>
protected override Size MeasureOverride(Size availableSize)
{
var child = this.Child;
var child = Child;
if (child != null)
{
@ -87,7 +87,7 @@ namespace Perspex.Controls.Presenters
private void ContentChanged(PerspexPropertyChangedEventArgs e)
{
_createdChild = false;
this.InvalidateMeasure();
InvalidateMeasure();
}
/// <summary>
@ -95,20 +95,20 @@ namespace Perspex.Controls.Presenters
/// </summary>
private void CreateChild()
{
var old = this.Child;
var content = this.Content;
var old = Child;
var content = Content;
var result = content != null ? this.MaterializeDataTemplate(content) : null;
var logicalHost = this.FindReparentingHost();
var logicalChildren = logicalHost?.LogicalChildren ?? this.LogicalChildren;
var logicalChildren = logicalHost?.LogicalChildren ?? LogicalChildren;
logicalChildren.Remove(old);
this.ClearVisualChildren();
ClearVisualChildren();
this.Child = result;
Child = result;
if (result != null)
{
this.AddVisualChild(result);
AddVisualChild(result);
if (result.Parent == null)
{

48
src/Perspex.Controls/Presenters/DeckPresenter.cs

@ -65,7 +65,7 @@ namespace Perspex.Controls.Presenters
{
if (_generator == null)
{
var i = this.TemplatedParent as ItemsControl;
var i = TemplatedParent as ItemsControl;
_generator = i?.ItemContainerGenerator ?? new ItemContainerGenerator(this);
}
@ -88,8 +88,8 @@ namespace Perspex.Controls.Presenters
/// </summary>
public IEnumerable Items
{
get { return this.GetValue(ItemsProperty); }
set { this.SetValue(ItemsProperty, value); }
get { return GetValue(ItemsProperty); }
set { SetValue(ItemsProperty, value); }
}
/// <summary>
@ -97,8 +97,8 @@ namespace Perspex.Controls.Presenters
/// </summary>
public ITemplate<IPanel> ItemsPanel
{
get { return this.GetValue(ItemsPanelProperty); }
set { this.SetValue(ItemsPanelProperty, value); }
get { return GetValue(ItemsPanelProperty); }
set { SetValue(ItemsPanelProperty, value); }
}
/// <summary>
@ -106,8 +106,8 @@ namespace Perspex.Controls.Presenters
/// </summary>
public int SelectedIndex
{
get { return this.GetValue(SelectedIndexProperty); }
set { this.SetValue(SelectedIndexProperty, value); }
get { return GetValue(SelectedIndexProperty); }
set { SetValue(SelectedIndexProperty, value); }
}
/// <summary>
@ -124,8 +124,8 @@ namespace Perspex.Controls.Presenters
/// </summary>
public IPageTransition Transition
{
get { return this.GetValue(TransitionProperty); }
set { this.SetValue(TransitionProperty, value); }
get { return GetValue(TransitionProperty); }
set { SetValue(TransitionProperty, value); }
}
/// <inheritdoc/>
@ -133,7 +133,7 @@ namespace Perspex.Controls.Presenters
{
if (!_createdPanel)
{
this.CreatePanel();
CreatePanel();
}
}
@ -144,21 +144,21 @@ namespace Perspex.Controls.Presenters
{
var logicalHost = this.FindReparentingHost();
this.ClearVisualChildren();
this.Panel = this.ItemsPanel.Build();
this.Panel.SetValue(TemplatedParentProperty, this.TemplatedParent);
ClearVisualChildren();
Panel = ItemsPanel.Build();
Panel.SetValue(TemplatedParentProperty, TemplatedParent);
this.AddVisualChild(this.Panel);
AddVisualChild(Panel);
if (logicalHost != null)
{
((IReparentingControl)this.Panel).ReparentLogicalChildren(
((IReparentingControl)Panel).ReparentLogicalChildren(
logicalHost,
logicalHost.LogicalChildren);
}
_createdPanel = true;
var task = this.MoveToPage(-1, this.SelectedIndex);
var task = MoveToPage(-1, SelectedIndex);
}
/// <summary>
@ -169,7 +169,7 @@ namespace Perspex.Controls.Presenters
/// <returns>A task tracking the animation.</returns>
private async Task MoveToPage(int fromIndex, int toIndex)
{
var generator = this.ItemContainerGenerator;
var generator = ItemContainerGenerator;
IControl from = null;
IControl to = null;
@ -180,23 +180,23 @@ namespace Perspex.Controls.Presenters
if (toIndex != -1)
{
var item = this.Items.Cast<object>().ElementAt(toIndex);
var item = Items.Cast<object>().ElementAt(toIndex);
to = generator.CreateContainers(toIndex, new[] { item }, null).FirstOrDefault();
if (to != null)
{
this.Panel.Children.Add(to);
Panel.Children.Add(to);
}
}
if (this.Transition != null)
if (Transition != null)
{
await this.Transition.Start((Visual)from, (Visual)to, fromIndex < toIndex);
await Transition.Start((Visual)from, (Visual)to, fromIndex < toIndex);
}
if (from != null)
{
this.Panel.Children.Remove(from);
Panel.Children.Remove(from);
generator.RemoveContainers(fromIndex, new[] { from });
}
}
@ -207,9 +207,9 @@ namespace Perspex.Controls.Presenters
/// <param name="e">The event args.</param>
private void SelectedIndexChanged(PerspexPropertyChangedEventArgs e)
{
if (this.Panel != null)
if (Panel != null)
{
var task = this.MoveToPage((int)e.OldValue, (int)e.NewValue);
var task = MoveToPage((int)e.OldValue, (int)e.NewValue);
}
}
}

60
src/Perspex.Controls/Presenters/ItemsPresenter.cs

@ -60,7 +60,7 @@ namespace Perspex.Controls.Presenters
{
if (_generator == null)
{
var i = this.TemplatedParent as ItemsControl;
var i = TemplatedParent as ItemsControl;
_generator = i?.ItemContainerGenerator ?? new ItemContainerGenerator(this);
}
@ -83,8 +83,8 @@ namespace Perspex.Controls.Presenters
/// </summary>
public IEnumerable Items
{
get { return this.GetValue(ItemsProperty); }
set { this.SetValue(ItemsProperty, value); }
get { return GetValue(ItemsProperty); }
set { SetValue(ItemsProperty, value); }
}
/// <summary>
@ -92,8 +92,8 @@ namespace Perspex.Controls.Presenters
/// </summary>
public ITemplate<IPanel> ItemsPanel
{
get { return this.GetValue(ItemsPanelProperty); }
set { this.SetValue(ItemsPanelProperty, value); }
get { return GetValue(ItemsPanelProperty); }
set { SetValue(ItemsPanelProperty, value); }
}
/// <summary>
@ -110,21 +110,21 @@ namespace Perspex.Controls.Presenters
{
if (!_createdPanel)
{
this.CreatePanel();
CreatePanel();
}
}
/// <inheritdoc/>
protected override Size MeasureOverride(Size availableSize)
{
this.Panel.Measure(availableSize);
return this.Panel.DesiredSize;
Panel.Measure(availableSize);
return Panel.DesiredSize;
}
/// <inheritdoc/>
protected override Size ArrangeOverride(Size finalSize)
{
this.Panel.Arrange(new Rect(finalSize));
Panel.Arrange(new Rect(finalSize));
return finalSize;
}
@ -134,33 +134,33 @@ namespace Perspex.Controls.Presenters
/// </summary>
private void CreatePanel()
{
this.ClearVisualChildren();
this.Panel = this.ItemsPanel.Build();
this.Panel.SetValue(TemplatedParentProperty, this.TemplatedParent);
ClearVisualChildren();
Panel = ItemsPanel.Build();
Panel.SetValue(TemplatedParentProperty, TemplatedParent);
if (!this.Panel.IsSet(KeyboardNavigation.DirectionalNavigationProperty))
if (!Panel.IsSet(KeyboardNavigation.DirectionalNavigationProperty))
{
KeyboardNavigation.SetDirectionalNavigation(
(InputElement)this.Panel,
(InputElement)Panel,
KeyboardNavigationMode.Contained);
}
this.AddVisualChild(this.Panel);
AddVisualChild(Panel);
var logicalHost = this.FindReparentingHost();
if (logicalHost != null)
{
((IReparentingControl)this.Panel).ReparentLogicalChildren(
((IReparentingControl)Panel).ReparentLogicalChildren(
logicalHost,
logicalHost.LogicalChildren);
}
KeyboardNavigation.SetTabNavigation(
(InputElement)this.Panel,
(InputElement)Panel,
KeyboardNavigation.GetTabNavigation(this));
_createdPanel = true;
this.CreateItemsAndListenForChanges(this.Items);
CreateItemsAndListenForChanges(Items);
}
/// <summary>
@ -171,14 +171,14 @@ namespace Perspex.Controls.Presenters
{
if (items != null)
{
this.Panel.Children.AddRange(
this.ItemContainerGenerator.CreateContainers(0, this.Items, null));
Panel.Children.AddRange(
ItemContainerGenerator.CreateContainers(0, Items, null));
INotifyCollectionChanged incc = items as INotifyCollectionChanged;
if (incc != null)
{
incc.CollectionChanged += this.ItemsCollectionChanged;
incc.CollectionChanged += ItemsCollectionChanged;
}
}
}
@ -191,24 +191,24 @@ namespace Perspex.Controls.Presenters
{
if (_createdPanel)
{
var generator = this.ItemContainerGenerator;
var generator = ItemContainerGenerator;
if (e.OldValue != null)
{
generator.ClearContainers();
this.Panel.Children.Clear();
Panel.Children.Clear();
INotifyCollectionChanged incc = e.OldValue as INotifyCollectionChanged;
if (incc != null)
{
incc.CollectionChanged -= this.ItemsCollectionChanged;
incc.CollectionChanged -= ItemsCollectionChanged;
}
}
if (this.Panel != null)
if (Panel != null)
{
this.CreateItemsAndListenForChanges((IEnumerable)e.NewValue);
CreateItemsAndListenForChanges((IEnumerable)e.NewValue);
}
}
}
@ -222,23 +222,23 @@ namespace Perspex.Controls.Presenters
{
if (_createdPanel)
{
var generator = this.ItemContainerGenerator;
var generator = ItemContainerGenerator;
// TODO: Handle Move and Replace etc.
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
this.Panel.Children.AddRange(
Panel.Children.AddRange(
generator.CreateContainers(e.NewStartingIndex, e.NewItems, null));
break;
case NotifyCollectionChangedAction.Remove:
this.Panel.Children.RemoveAll(
Panel.Children.RemoveAll(
generator.RemoveContainers(e.OldStartingIndex, e.OldItems));
break;
}
this.InvalidateMeasure();
InvalidateMeasure();
}
}
}

50
src/Perspex.Controls/Presenters/ScrollContentPresenter.cs

@ -28,46 +28,46 @@ namespace Perspex.Controls.Presenters
static ScrollContentPresenter()
{
ClipToBoundsProperty.OverrideDefaultValue(typeof(ScrollContentPresenter), true);
Control.AffectsArrange(OffsetProperty);
AffectsArrange(OffsetProperty);
}
public ScrollContentPresenter()
{
this.AddHandler(Control.RequestBringIntoViewEvent, this.BringIntoViewRequested);
AddHandler(RequestBringIntoViewEvent, BringIntoViewRequested);
}
public Size Extent
{
get { return this.GetValue(ExtentProperty); }
private set { this.SetValue(ExtentProperty, value); }
get { return GetValue(ExtentProperty); }
private set { SetValue(ExtentProperty, value); }
}
public Vector Offset
{
get { return this.GetValue(OffsetProperty); }
set { this.SetValue(OffsetProperty, value); }
get { return GetValue(OffsetProperty); }
set { SetValue(OffsetProperty, value); }
}
public Size Viewport
{
get { return this.GetValue(ViewportProperty); }
private set { this.SetValue(ViewportProperty, value); }
get { return GetValue(ViewportProperty); }
private set { SetValue(ViewportProperty, value); }
}
public bool CanScrollHorizontally
{
get { return this.GetValue(CanScrollHorizontallyProperty); }
get { return GetValue(CanScrollHorizontallyProperty); }
}
protected override Size MeasureOverride(Size availableSize)
{
var content = this.Content as ILayoutable;
var content = Content as ILayoutable;
if (content != null)
{
var measureSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
if (!this.CanScrollHorizontally)
if (!CanScrollHorizontally)
{
measureSize = measureSize.WithWidth(availableSize.Width);
}
@ -79,7 +79,7 @@ namespace Perspex.Controls.Presenters
}
else
{
return this.Extent = new Size();
return Extent = new Size();
}
}
@ -87,15 +87,15 @@ namespace Perspex.Controls.Presenters
{
var child = this.GetVisualChildren().SingleOrDefault() as ILayoutable;
this.Viewport = finalSize;
this.Extent = _measuredExtent;
Viewport = finalSize;
Extent = _measuredExtent;
if (child != null)
{
var size = new Size(
Math.Max(finalSize.Width, child.DesiredSize.Width),
Math.Max(finalSize.Height, child.DesiredSize.Height));
child.Arrange(new Rect((Point)(-this.Offset), size));
child.Arrange(new Rect((Point)(-Offset), size));
return finalSize;
}
@ -104,12 +104,12 @@ namespace Perspex.Controls.Presenters
protected override void OnPointerWheelChanged(PointerWheelEventArgs e)
{
if (this.Extent.Height > this.Viewport.Height)
if (Extent.Height > Viewport.Height)
{
var y = this.Offset.Y + (-e.Delta.Y * 50);
var y = Offset.Y + (-e.Delta.Y * 50);
y = Math.Max(y, 0);
y = Math.Min(y, this.Extent.Height - this.Viewport.Height);
this.Offset = new Vector(this.Offset.X, y);
y = Math.Min(y, Extent.Height - Viewport.Height);
Offset = new Vector(Offset.X, y);
e.Handled = true;
}
}
@ -118,11 +118,11 @@ namespace Perspex.Controls.Presenters
{
var transform = e.TargetObject.TransformToVisual(this.GetVisualChildren().Single());
var rect = e.TargetRect * transform;
var offset = this.Offset;
var offset = Offset;
if (rect.Bottom > offset.Y + this.Viewport.Height)
if (rect.Bottom > offset.Y + Viewport.Height)
{
offset = offset.WithY(rect.Bottom - this.Viewport.Height);
offset = offset.WithY(rect.Bottom - Viewport.Height);
e.Handled = true;
}
@ -132,9 +132,9 @@ namespace Perspex.Controls.Presenters
e.Handled = true;
}
if (rect.Right > offset.X + this.Viewport.Width)
if (rect.Right > offset.X + Viewport.Width)
{
offset = offset.WithX(rect.Right - this.Viewport.Width);
offset = offset.WithX(rect.Right - Viewport.Width);
e.Handled = true;
}
@ -144,7 +144,7 @@ namespace Perspex.Controls.Presenters
e.Handled = true;
}
this.Offset = offset;
Offset = offset;
}
}
}

60
src/Perspex.Controls/Presenters/TextPresenter.cs

@ -31,54 +31,54 @@ namespace Perspex.Controls.Presenters
{
_caretTimer = new DispatcherTimer();
_caretTimer.Interval = TimeSpan.FromMilliseconds(500);
_caretTimer.Tick += this.CaretTimerTick;
_caretTimer.Tick += CaretTimerTick;
_canScrollHorizontally = this.GetObservable(TextWrappingProperty)
_canScrollHorizontally = GetObservable(TextWrappingProperty)
.Select(x => x == TextWrapping.NoWrap);
Observable.Merge(
this.GetObservable(SelectionStartProperty),
this.GetObservable(SelectionEndProperty))
.Subscribe(_ => this.InvalidateFormattedText());
GetObservable(SelectionStartProperty),
GetObservable(SelectionEndProperty))
.Subscribe(_ => InvalidateFormattedText());
this.GetObservable(TextPresenter.CaretIndexProperty)
.Subscribe(this.CaretIndexChanged);
GetObservable(CaretIndexProperty)
.Subscribe(CaretIndexChanged);
}
public int CaretIndex
{
get { return this.GetValue(CaretIndexProperty); }
set { this.SetValue(CaretIndexProperty, value); }
get { return GetValue(CaretIndexProperty); }
set { SetValue(CaretIndexProperty, value); }
}
public int SelectionStart
{
get { return this.GetValue(SelectionStartProperty); }
set { this.SetValue(SelectionStartProperty, value); }
get { return GetValue(SelectionStartProperty); }
set { SetValue(SelectionStartProperty, value); }
}
public int SelectionEnd
{
get { return this.GetValue(SelectionEndProperty); }
set { this.SetValue(SelectionEndProperty, value); }
get { return GetValue(SelectionEndProperty); }
set { SetValue(SelectionEndProperty, value); }
}
public int GetCaretIndex(Point point)
{
var hit = this.FormattedText.HitTestPoint(point);
var hit = FormattedText.HitTestPoint(point);
return hit.TextPosition + (hit.IsTrailing ? 1 : 0);
}
public override void Render(IDrawingContext context)
{
var selectionStart = this.SelectionStart;
var selectionEnd = this.SelectionEnd;
var selectionStart = SelectionStart;
var selectionEnd = SelectionEnd;
if (selectionStart != selectionEnd)
{
var start = Math.Min(selectionStart, selectionEnd);
var length = Math.Max(selectionStart, selectionEnd) - start;
var rects = this.FormattedText.HitTestTextRange(start, length);
var rects = FormattedText.HitTestTextRange(start, length);
var brush = new SolidColorBrush(0xff086f9e);
@ -92,7 +92,7 @@ namespace Perspex.Controls.Presenters
if (selectionStart == selectionEnd)
{
var charPos = this.FormattedText.HitTestTextPosition(this.CaretIndex);
var charPos = FormattedText.HitTestTextPosition(CaretIndex);
Brush caretBrush = Brushes.Black;
if (_caretBlink)
@ -113,14 +113,14 @@ namespace Perspex.Controls.Presenters
{
_caretBlink = true;
_caretTimer.Start();
this.InvalidateVisual();
InvalidateVisual();
}
public void HideCaret()
{
_caretBlink = false;
_caretTimer.Stop();
this.InvalidateVisual();
InvalidateVisual();
}
internal void CaretIndexChanged(int caretIndex)
@ -130,9 +130,9 @@ namespace Perspex.Controls.Presenters
_caretBlink = true;
_caretTimer.Stop();
_caretTimer.Start();
this.InvalidateVisual();
InvalidateVisual();
var rect = this.FormattedText.HitTestTextPosition(caretIndex);
var rect = FormattedText.HitTestTextPosition(caretIndex);
this.BringIntoView(rect);
}
}
@ -140,8 +140,8 @@ namespace Perspex.Controls.Presenters
protected override FormattedText CreateFormattedText(Size constraint)
{
var result = base.CreateFormattedText(constraint);
var selectionStart = this.SelectionStart;
var selectionEnd = this.SelectionEnd;
var selectionStart = SelectionStart;
var selectionEnd = SelectionEnd;
var start = Math.Min(selectionStart, selectionEnd);
var length = Math.Max(selectionStart, selectionEnd) - start;
@ -155,7 +155,7 @@ namespace Perspex.Controls.Presenters
protected override Size MeasureOverride(Size availableSize)
{
var text = this.Text;
var text = Text;
if (!string.IsNullOrWhiteSpace(text))
{
@ -166,11 +166,11 @@ namespace Perspex.Controls.Presenters
// TODO: Pretty sure that measuring "X" isn't the right way to do this...
using (var formattedText = new FormattedText(
"X",
this.FontFamily,
this.FontSize,
this.FontStyle,
FontFamily,
FontSize,
FontStyle,
TextAlignment.Left,
this.FontWeight))
FontWeight))
{
return formattedText.Measure();
}
@ -180,7 +180,7 @@ namespace Perspex.Controls.Presenters
private void CaretTimerTick(object sender, EventArgs e)
{
_caretBlink = !_caretBlink;
this.InvalidateVisual();
InvalidateVisual();
}
}
}

38
src/Perspex.Controls/Primitives/AccessText.cs

@ -37,7 +37,7 @@ namespace Perspex.Controls.Primitives
/// </summary>
public AccessText()
{
this.GetObservable(TextProperty).Subscribe(this.TextChanged);
GetObservable(TextProperty).Subscribe(TextChanged);
}
/// <summary>
@ -54,8 +54,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public bool ShowAccessKey
{
get { return this.GetValue(ShowAccessKeyProperty); }
set { this.SetValue(ShowAccessKeyProperty, value); }
get { return GetValue(ShowAccessKeyProperty); }
set { SetValue(ShowAccessKeyProperty, value); }
}
/// <summary>
@ -66,14 +66,14 @@ namespace Perspex.Controls.Primitives
{
base.Render(context);
int underscore = this.Text?.IndexOf('_') ?? -1;
int underscore = Text?.IndexOf('_') ?? -1;
if (underscore != -1 && this.ShowAccessKey)
if (underscore != -1 && ShowAccessKey)
{
var rect = this.FormattedText.HitTestTextPosition(underscore);
var rect = FormattedText.HitTestTextPosition(underscore);
var offset = new Vector(0, -0.5);
context.DrawLine(
new Pen(this.Foreground, 1),
new Pen(Foreground, 1),
rect.BottomLeft + offset,
rect.BottomRight + offset);
}
@ -87,12 +87,12 @@ namespace Perspex.Controls.Primitives
protected override FormattedText CreateFormattedText(Size constraint)
{
var result = new FormattedText(
this.StripAccessKey(this.Text),
this.FontFamily,
this.FontSize,
this.FontStyle,
this.TextAlignment,
this.FontWeight);
StripAccessKey(Text),
FontFamily,
FontSize,
FontStyle,
TextAlignment,
FontWeight);
result.Constraint = constraint;
return result;
}
@ -117,9 +117,9 @@ namespace Perspex.Controls.Primitives
base.OnAttachedToVisualTree(root);
_accessKeys = (root as IInputRoot)?.AccessKeyHandler;
if (_accessKeys != null && this.AccessKey != 0)
if (_accessKeys != null && AccessKey != 0)
{
_accessKeys.Register(this.AccessKey, this);
_accessKeys.Register(AccessKey, this);
}
}
@ -131,7 +131,7 @@ namespace Perspex.Controls.Primitives
{
base.OnDetachedFromVisualTree(root);
if (_accessKeys != null && this.AccessKey != 0)
if (_accessKeys != null && AccessKey != 0)
{
_accessKeys.Unregister(this);
_accessKeys = null;
@ -175,11 +175,11 @@ namespace Perspex.Controls.Primitives
}
}
this.AccessKey = key;
AccessKey = key;
if (_accessKeys != null && this.AccessKey != 0)
if (_accessKeys != null && AccessKey != 0)
{
_accessKeys.Register(this.AccessKey, this);
_accessKeys.Register(AccessKey, this);
}
}
}

12
src/Perspex.Controls/Primitives/AdornerDecorator.cs

@ -7,10 +7,10 @@ namespace Perspex.Controls.Primitives
{
public AdornerDecorator()
{
this.AdornerLayer = new AdornerLayer();
((ISetLogicalParent)this.AdornerLayer).SetParent(this);
this.AdornerLayer.ZIndex = int.MaxValue;
this.AddVisualChild(this.AdornerLayer);
AdornerLayer = new AdornerLayer();
((ISetLogicalParent)AdornerLayer).SetParent(this);
AdornerLayer.ZIndex = int.MaxValue;
AddVisualChild(AdornerLayer);
}
public AdornerLayer AdornerLayer
@ -20,13 +20,13 @@ namespace Perspex.Controls.Primitives
protected override Size MeasureOverride(Size availableSize)
{
this.AdornerLayer.Measure(availableSize);
AdornerLayer.Measure(availableSize);
return base.MeasureOverride(availableSize);
}
protected override Size ArrangeOverride(Size finalSize)
{
this.AdornerLayer.Arrange(new Rect(finalSize));
AdornerLayer.Arrange(new Rect(finalSize));
return base.ArrangeOverride(finalSize);
}
}

12
src/Perspex.Controls/Primitives/AdornerLayer.cs

@ -27,7 +27,7 @@ namespace Perspex.Controls.Primitives
public AdornerLayer()
{
this.Children.CollectionChanged += this.ChildrenCollectionChanged;
Children.CollectionChanged += ChildrenCollectionChanged;
}
public static Visual GetAdornedElement(Visual adorner)
@ -50,9 +50,9 @@ namespace Perspex.Controls.Primitives
protected override Size ArrangeOverride(Size finalSize)
{
var parent = this.Parent;
var parent = Parent;
foreach (var child in this.Children)
foreach (var child in Children)
{
var info = (AdornedElementInfo)child.GetValue(s_adornedElementInfoProperty);
@ -88,13 +88,13 @@ namespace Perspex.Controls.Primitives
case NotifyCollectionChangedAction.Add:
foreach (Visual i in e.NewItems)
{
this.UpdateAdornedElement(i, i.GetValue(AdornedElementProperty));
UpdateAdornedElement(i, i.GetValue(AdornedElementProperty));
}
break;
}
this.InvalidateArrange();
InvalidateArrange();
}
private void UpdateAdornedElement(Visual adorner, Visual adorned)
@ -122,7 +122,7 @@ namespace Perspex.Controls.Primitives
info.Subscription = _tracker.Track(adorned).Subscribe(x =>
{
info.Bounds = x;
this.InvalidateArrange();
InvalidateArrange();
});
}
}

4
src/Perspex.Controls/Primitives/HeaderedContentControl.cs

@ -19,8 +19,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public object Header
{
get { return this.GetValue(HeaderProperty); }
set { this.SetValue(HeaderProperty, value); }
get { return GetValue(HeaderProperty); }
set { SetValue(HeaderProperty, value); }
}
}
}

4
src/Perspex.Controls/Primitives/HeaderedItemsControl.cs

@ -10,8 +10,8 @@ namespace Perspex.Controls.Primitives
public object Header
{
get { return this.GetValue(HeaderProperty); }
set { this.SetValue(HeaderProperty, value); }
get { return GetValue(HeaderProperty); }
set { SetValue(HeaderProperty, value); }
}
}
}

76
src/Perspex.Controls/Primitives/Popup.cs

@ -83,8 +83,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public Control Child
{
get { return this.GetValue(ChildProperty); }
set { this.SetValue(ChildProperty, value); }
get { return GetValue(ChildProperty); }
set { SetValue(ChildProperty, value); }
}
/// <summary>
@ -105,8 +105,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public bool IsOpen
{
get { return this.GetValue(IsOpenProperty); }
set { this.SetValue(IsOpenProperty, value); }
get { return GetValue(IsOpenProperty); }
set { SetValue(IsOpenProperty, value); }
}
/// <summary>
@ -114,8 +114,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public PlacementMode PlacementMode
{
get { return this.GetValue(PlacementModeProperty); }
set { this.SetValue(PlacementModeProperty, value); }
get { return GetValue(PlacementModeProperty); }
set { SetValue(PlacementModeProperty, value); }
}
/// <summary>
@ -123,8 +123,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public Control PlacementTarget
{
get { return this.GetValue(PlacementTargetProperty); }
set { this.SetValue(PlacementTargetProperty, value); }
get { return GetValue(PlacementTargetProperty); }
set { SetValue(PlacementTargetProperty, value); }
}
/// <summary>
@ -141,8 +141,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public bool StaysOpen
{
get { return this.GetValue(StaysOpenProperty); }
set { this.SetValue(StaysOpenProperty, value); }
get { return GetValue(StaysOpenProperty); }
set { SetValue(StaysOpenProperty, value); }
}
/// <summary>
@ -160,34 +160,34 @@ namespace Perspex.Controls.Primitives
{
if (_popupRoot == null)
{
_popupRoot = new PopupRoot(this.DependencyResolver)
_popupRoot = new PopupRoot(DependencyResolver)
{
[~PopupRoot.ContentProperty] = this[~ChildProperty],
[~PopupRoot.WidthProperty] = this[~WidthProperty],
[~PopupRoot.HeightProperty] = this[~HeightProperty],
[~PopupRoot.MinWidthProperty] = this[~MinWidthProperty],
[~PopupRoot.MaxWidthProperty] = this[~MaxWidthProperty],
[~PopupRoot.MinHeightProperty] = this[~MinHeightProperty],
[~PopupRoot.MaxHeightProperty] = this[~MaxHeightProperty],
[~ContentControl.ContentProperty] = this[~ChildProperty],
[~WidthProperty] = this[~WidthProperty],
[~HeightProperty] = this[~HeightProperty],
[~MinWidthProperty] = this[~MinWidthProperty],
[~MaxWidthProperty] = this[~MaxWidthProperty],
[~MinHeightProperty] = this[~MinHeightProperty],
[~MaxHeightProperty] = this[~MaxHeightProperty],
};
((ISetLogicalParent)_popupRoot).SetParent(this);
}
_popupRoot.SetPosition(this.GetPosition());
_popupRoot.AddHandler(PopupRoot.PointerPressedEvent, this.MaybeClose, RoutingStrategies.Bubble, true);
_popupRoot.SetPosition(GetPosition());
_popupRoot.AddHandler(PointerPressedEvent, MaybeClose, RoutingStrategies.Bubble, true);
if (_topLevel != null)
{
_topLevel.Deactivated += this.MaybeClose;
_topLevel.AddHandler(TopLevel.PointerPressedEvent, this.MaybeClose, RoutingStrategies.Tunnel);
_topLevel.Deactivated += MaybeClose;
_topLevel.AddHandler(PointerPressedEvent, MaybeClose, RoutingStrategies.Tunnel);
}
this.PopupRootCreated?.Invoke(this, EventArgs.Empty);
PopupRootCreated?.Invoke(this, EventArgs.Empty);
_popupRoot.Show();
this.IsOpen = true;
this.Opened?.Invoke(this, EventArgs.Empty);
IsOpen = true;
Opened?.Invoke(this, EventArgs.Empty);
}
/// <summary>
@ -197,14 +197,14 @@ namespace Perspex.Controls.Primitives
{
if (_popupRoot != null)
{
this._popupRoot.PointerPressed -= this.MaybeClose;
_topLevel.RemoveHandler(TopLevel.PointerPressedEvent, this.MaybeClose);
_topLevel.Deactivated -= this.MaybeClose;
_popupRoot.PointerPressed -= MaybeClose;
_topLevel.RemoveHandler(PointerPressedEvent, MaybeClose);
_topLevel.Deactivated -= MaybeClose;
_popupRoot.Hide();
}
this.IsOpen = false;
this.Closed?.Invoke(this, EventArgs.Empty);
IsOpen = false;
Closed?.Invoke(this, EventArgs.Empty);
}
/// <summary>
@ -245,11 +245,11 @@ namespace Perspex.Controls.Primitives
{
if ((bool)e.NewValue)
{
this.Open();
Open();
}
else
{
this.Close();
Close();
}
}
@ -259,7 +259,7 @@ namespace Perspex.Controls.Primitives
/// <param name="e">The event args.</param>
private void ChildChanged(PerspexPropertyChangedEventArgs e)
{
this.LogicalChildren.Clear();
LogicalChildren.Clear();
if (e.OldValue != null)
{
@ -269,7 +269,7 @@ namespace Perspex.Controls.Primitives
if (e.NewValue != null)
{
((ISetLogicalParent)e.NewValue).SetParent(this);
this.LogicalChildren.Add((ILogical)e.NewValue);
LogicalChildren.Add((ILogical)e.NewValue);
}
}
@ -279,12 +279,12 @@ namespace Perspex.Controls.Primitives
/// <returns>The popup's position in screen coordinates.</returns>
private Point GetPosition()
{
var target = this.PlacementTarget ?? this.GetVisualParent<Control>();
var target = PlacementTarget ?? this.GetVisualParent<Control>();
Point point;
if (target != null)
{
switch (this.PlacementMode)
switch (PlacementMode)
{
case PlacementMode.Bottom:
point = new Point(0, target.Bounds.Height);
@ -312,9 +312,9 @@ namespace Perspex.Controls.Primitives
/// <param name="e">The event args.</param>
private void MaybeClose(object sender, EventArgs e)
{
if (!this.StaysOpen)
if (!StaysOpen)
{
this.Close();
Close();
}
}
}

28
src/Perspex.Controls/Primitives/PopupRoot.cs

@ -44,7 +44,7 @@ namespace Perspex.Controls.Primitives
public PopupRoot(IDependencyResolver dependencyResolver)
: base(Locator.Current.GetService<IPopupImpl>(), dependencyResolver)
{
this.GetObservable(ParentProperty).Subscribe(x => this.InheritanceParent = (PerspexObject)x);
GetObservable(ParentProperty).Subscribe(x => InheritanceParent = (PerspexObject)x);
}
/// <summary>
@ -63,7 +63,7 @@ namespace Perspex.Controls.Primitives
/// </remarks>
IInteractive IInteractive.InteractiveParent
{
get { return this.Parent; }
get { return Parent; }
}
/// <summary>
@ -71,7 +71,7 @@ namespace Perspex.Controls.Primitives
/// </summary>
IVisual IHostedVisualTreeRoot.Host
{
get { return this.Parent; }
get { return Parent; }
}
/// <summary>
@ -80,7 +80,7 @@ namespace Perspex.Controls.Primitives
/// <param name="p">The position.</param>
public void SetPosition(Point p)
{
this.PlatformImpl.SetPosition(p);
PlatformImpl.SetPosition(p);
}
/// <summary>
@ -88,8 +88,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public void Hide()
{
this.PlatformImpl.Hide();
this.IsVisible = false;
PlatformImpl.Hide();
IsVisible = false;
}
/// <summary>
@ -97,9 +97,9 @@ namespace Perspex.Controls.Primitives
/// </summary>
public void Show()
{
this.PlatformImpl.Show();
this.LayoutManager?.ExecuteLayoutPass();
this.IsVisible = true;
PlatformImpl.Show();
LayoutManager?.ExecuteLayoutPass();
IsVisible = true;
}
/// <inheritdoc/>
@ -107,7 +107,7 @@ namespace Perspex.Controls.Primitives
{
base.OnTemplateApplied();
if (this.Parent.TemplatedParent != null)
if (Parent.TemplatedParent != null)
{
if (_presenterSubscription != null)
{
@ -115,19 +115,19 @@ namespace Perspex.Controls.Primitives
_presenterSubscription = null;
}
var presenter = this.Presenter;
var presenter = Presenter;
if (presenter != null)
{
presenter.GetObservable(ContentPresenter.ChildProperty)
.Subscribe(this.SetTemplatedParentAndApplyChildTemplates);
.Subscribe(SetTemplatedParentAndApplyChildTemplates);
}
}
}
private void SetTemplatedParentAndApplyChildTemplates(IControl control)
{
var templatedParent = this.Parent.TemplatedParent;
var templatedParent = Parent.TemplatedParent;
if (control.TemplatedParent == null)
{
@ -140,7 +140,7 @@ namespace Perspex.Controls.Primitives
{
foreach (IControl child in control.GetVisualChildren())
{
this.SetTemplatedParentAndApplyChildTemplates(child);
SetTemplatedParentAndApplyChildTemplates(child);
}
}
}

12
src/Perspex.Controls/Primitives/RangeBase.cs

@ -50,8 +50,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public double Minimum
{
get { return this.GetValue(MinimumProperty); }
set { this.SetValue(MinimumProperty, value); }
get { return GetValue(MinimumProperty); }
set { SetValue(MinimumProperty, value); }
}
/// <summary>
@ -59,8 +59,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public double Maximum
{
get { return this.GetValue(MaximumProperty); }
set { this.SetValue(MaximumProperty, value); }
get { return GetValue(MaximumProperty); }
set { SetValue(MaximumProperty, value); }
}
/// <summary>
@ -68,8 +68,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public double Value
{
get { return this.GetValue(ValueProperty); }
set { this.SetValue(ValueProperty, value); }
get { return GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
/// <summary>

30
src/Perspex.Controls/Primitives/ScrollBar.cs

@ -36,12 +36,12 @@ namespace Perspex.Controls.Primitives
public ScrollBar()
{
var isVisible = Observable.Merge(
this.GetObservable(MinimumProperty).Select(_ => Unit.Default),
this.GetObservable(MaximumProperty).Select(_ => Unit.Default),
this.GetObservable(ViewportSizeProperty).Select(_ => Unit.Default),
this.GetObservable(VisibilityProperty).Select(_ => Unit.Default))
.Select(_ => this.CalculateIsVisible());
this.Bind(ScrollBar.IsVisibleProperty, isVisible, BindingPriority.Style);
GetObservable(MinimumProperty).Select(_ => Unit.Default),
GetObservable(MaximumProperty).Select(_ => Unit.Default),
GetObservable(ViewportSizeProperty).Select(_ => Unit.Default),
GetObservable(VisibilityProperty).Select(_ => Unit.Default))
.Select(_ => CalculateIsVisible());
Bind(IsVisibleProperty, isVisible, BindingPriority.Style);
}
/// <summary>
@ -49,8 +49,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public double ViewportSize
{
get { return this.GetValue(ViewportSizeProperty); }
set { this.SetValue(ViewportSizeProperty, value); }
get { return GetValue(ViewportSizeProperty); }
set { SetValue(ViewportSizeProperty, value); }
}
/// <summary>
@ -59,8 +59,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public ScrollBarVisibility Visibility
{
get { return this.GetValue(VisibilityProperty); }
set { this.SetValue(VisibilityProperty, value); }
get { return GetValue(VisibilityProperty); }
set { SetValue(VisibilityProperty, value); }
}
/// <summary>
@ -68,8 +68,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public Orientation Orientation
{
get { return this.GetValue(OrientationProperty); }
set { this.SetValue(OrientationProperty, value); }
get { return GetValue(OrientationProperty); }
set { SetValue(OrientationProperty, value); }
}
/// <inheritdoc/>
@ -84,7 +84,7 @@ namespace Perspex.Controls.Primitives
/// <returns>The scrollbar's visibility.</returns>
private bool CalculateIsVisible()
{
switch (this.Visibility)
switch (Visibility)
{
case ScrollBarVisibility.Visible:
return true;
@ -93,8 +93,8 @@ namespace Perspex.Controls.Primitives
return false;
case ScrollBarVisibility.Auto:
var viewportSize = this.ViewportSize;
return double.IsNaN(viewportSize) || viewportSize < this.Maximum - this.Minimum;
var viewportSize = ViewportSize;
return double.IsNaN(viewportSize) || viewportSize < Maximum - Minimum;
default:
throw new InvalidOperationException("Invalid value for ScrollBar.Visibility.");

78
src/Perspex.Controls/Primitives/SelectingItemsControl.cs

@ -67,7 +67,7 @@ namespace Perspex.Controls.Primitives
/// </summary>
public SelectingItemsControl()
{
this.ItemContainerGenerator.ContainersInitialized.Subscribe(this.ContainersInitialized);
ItemContainerGenerator.ContainersInitialized.Subscribe(ContainersInitialized);
}
/// <summary>
@ -76,8 +76,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public bool AutoSelect
{
get { return this.GetValue(AutoSelectProperty); }
set { this.SetValue(AutoSelectProperty, value); }
get { return GetValue(AutoSelectProperty); }
set { SetValue(AutoSelectProperty, value); }
}
/// <summary>
@ -85,8 +85,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public int SelectedIndex
{
get { return this.GetValue(SelectedIndexProperty); }
set { this.SetValue(SelectedIndexProperty, value); }
get { return GetValue(SelectedIndexProperty); }
set { SetValue(SelectedIndexProperty, value); }
}
/// <summary>
@ -94,8 +94,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public object SelectedItem
{
get { return this.GetValue(SelectedItemProperty); }
set { this.SetValue(SelectedItemProperty, value); }
get { return GetValue(SelectedItemProperty); }
set { SetValue(SelectedItemProperty, value); }
}
/// <inheritdoc/>
@ -103,13 +103,13 @@ namespace Perspex.Controls.Primitives
{
base.ItemsChanged(e);
if (this.SelectedIndex != -1)
if (SelectedIndex != -1)
{
this.SelectedIndex = IndexOf((IEnumerable)e.NewValue, this.SelectedItem);
SelectedIndex = IndexOf((IEnumerable)e.NewValue, SelectedItem);
}
else if (this.AutoSelect && this.Items != null & this.Items.Cast<object>().Any())
else if (AutoSelect && Items != null & Items.Cast<object>().Any())
{
this.SelectedIndex = 0;
SelectedIndex = 0;
}
}
@ -121,34 +121,34 @@ namespace Perspex.Controls.Primitives
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
if (this.AutoSelect && this.SelectedIndex == -1)
if (AutoSelect && SelectedIndex == -1)
{
this.SelectedIndex = 0;
SelectedIndex = 0;
}
break;
case NotifyCollectionChangedAction.Remove:
case NotifyCollectionChangedAction.Replace:
var selectedIndex = this.SelectedIndex;
var selectedIndex = SelectedIndex;
if (selectedIndex >= e.OldStartingIndex &&
selectedIndex < e.OldStartingIndex + e.OldItems.Count)
{
if (!this.AutoSelect)
if (!AutoSelect)
{
this.SelectedIndex = -1;
SelectedIndex = -1;
}
else
{
this.LostSelection();
LostSelection();
}
}
break;
case NotifyCollectionChangedAction.Reset:
this.SelectedIndex = IndexOf(e.NewItems, this.SelectedItem);
SelectedIndex = IndexOf(e.NewItems, SelectedItem);
break;
}
}
@ -161,7 +161,7 @@ namespace Perspex.Controls.Primitives
if (e.NavigationMethod == NavigationMethod.Pointer ||
e.NavigationMethod == NavigationMethod.Directional)
{
this.TrySetSelectionFromContainerEvent(e.Source, true);
TrySetSelectionFromContainerEvent(e.Source, true);
}
}
@ -194,7 +194,7 @@ namespace Perspex.Controls.Primitives
foreach (var i in items)
{
if (object.Equals(i, item))
if (Equals(i, item))
{
return index;
}
@ -264,12 +264,12 @@ namespace Perspex.Controls.Primitives
/// <param name="containers">The containers.</param>
private void ContainersInitialized(ItemContainers containers)
{
var selectedIndex = this.SelectedIndex;
var selectedIndex = SelectedIndex;
var selectedContainer = containers.Items.OfType<ISelectable>().FirstOrDefault(x => x.IsSelected);
if (selectedContainer != null)
{
this.SelectedIndex = containers.Items.IndexOf((IControl)selectedContainer) + containers.StartingIndex;
SelectedIndex = containers.Items.IndexOf((IControl)selectedContainer) + containers.StartingIndex;
}
else if (selectedIndex >= containers.StartingIndex &&
selectedIndex < containers.StartingIndex + containers.Items.Count)
@ -289,7 +289,7 @@ namespace Perspex.Controls.Primitives
if (selectable != null)
{
this.TrySetSelectionFromContainerEvent(e.Source, selectable.IsSelected);
TrySetSelectionFromContainerEvent(e.Source, selectable.IsSelected);
}
}
@ -303,7 +303,7 @@ namespace Perspex.Controls.Primitives
if (index != -1)
{
var container = this.ItemContainerGenerator.ContainerFromIndex(index);
var container = ItemContainerGenerator.ContainerFromIndex(index);
MarkContainerSelected(container, false);
}
@ -311,19 +311,19 @@ namespace Perspex.Controls.Primitives
if (index == -1)
{
this.SelectedItem = null;
SelectedItem = null;
}
else
{
this.SelectedItem = this.Items.Cast<object>().ElementAt((int)e.NewValue);
var container = this.ItemContainerGenerator.ContainerFromIndex(index);
SelectedItem = Items.Cast<object>().ElementAt((int)e.NewValue);
var container = ItemContainerGenerator.ContainerFromIndex(index);
MarkContainerSelected(container, true);
var inputElement = container as IInputElement;
if (inputElement != null && this.Presenter != null && this.Presenter.Panel != null)
if (inputElement != null && Presenter != null && Presenter.Panel != null)
{
KeyboardNavigation.SetTabOnceActiveElement(
(InputElement)this.Presenter.Panel,
(InputElement)Presenter.Panel,
inputElement);
}
}
@ -335,7 +335,7 @@ namespace Perspex.Controls.Primitives
/// <param name="e">The event args.</param>
private void SelectedItemChanged(PerspexPropertyChangedEventArgs e)
{
this.SelectedIndex = IndexOf(this.Items, e.NewValue);
SelectedIndex = IndexOf(Items, e.NewValue);
}
/// <summary>
@ -358,20 +358,20 @@ namespace Perspex.Controls.Primitives
/// </summary>
private void LostSelection()
{
var items = this.Items?.Cast<object>();
var items = Items?.Cast<object>();
if (items != null && this.AutoSelect)
if (items != null && AutoSelect)
{
var index = Math.Min(this.SelectedIndex, items.Count() - 1);
var index = Math.Min(SelectedIndex, items.Count() - 1);
if (index > -1)
{
this.SelectedItem = items.ElementAt(index);
SelectedItem = items.ElementAt(index);
return;
}
}
this.SelectedIndex = -1;
SelectedIndex = -1;
}
/// <summary>
@ -381,21 +381,21 @@ namespace Perspex.Controls.Primitives
/// <param name="select">Whether the container should be selected or unselected.</param>
private void TrySetSelectionFromContainerEvent(IInteractive eventSource, bool select)
{
var item = this.GetContainerFromEvent(eventSource);
var item = GetContainerFromEvent(eventSource);
if (item != null)
{
var index = this.ItemContainerGenerator.IndexFromContainer(item);
var index = ItemContainerGenerator.IndexFromContainer(item);
if (index != -1)
{
if (select)
{
this.SelectedIndex = index;
SelectedIndex = index;
}
else
{
this.LostSelection();
LostSelection();
}
}
}

10
src/Perspex.Controls/Primitives/TabStrip.cs

@ -21,19 +21,19 @@ namespace Perspex.Controls.Primitives
public TabStrip()
{
this.GetObservable(SelectedItemProperty).Subscribe(x => this.SelectedTab = x as TabItem);
this.GetObservable(SelectedTabProperty).Subscribe(x => this.SelectedItem = x as TabItem);
GetObservable(SelectedItemProperty).Subscribe(x => SelectedTab = x as TabItem);
GetObservable(SelectedTabProperty).Subscribe(x => SelectedItem = x as TabItem);
}
public TabItem SelectedTab
{
get { return this.GetValue(SelectedTabProperty); }
set { this.SetValue(SelectedTabProperty, value); }
get { return GetValue(SelectedTabProperty); }
set { SetValue(SelectedTabProperty, value); }
}
protected override IItemContainerGenerator CreateItemContainerGenerator()
{
TabControl tabControl = this.TemplatedParent as TabControl;
TabControl tabControl = TemplatedParent as TabControl;
IItemContainerGenerator result;
if (tabControl != null)

56
src/Perspex.Controls/Primitives/TemplatedControl.cs

@ -97,8 +97,8 @@ namespace Perspex.Controls.Primitives
_templateLog = Log.ForContext(new[]
{
new PropertyEnricher("Area", "Template"),
new PropertyEnricher("SourceContext", this.GetType()),
new PropertyEnricher("Id", this.GetHashCode()),
new PropertyEnricher("SourceContext", GetType()),
new PropertyEnricher("Id", GetHashCode()),
});
}
@ -107,8 +107,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public Brush Background
{
get { return this.GetValue(BackgroundProperty); }
set { this.SetValue(BackgroundProperty, value); }
get { return GetValue(BackgroundProperty); }
set { SetValue(BackgroundProperty, value); }
}
/// <summary>
@ -116,8 +116,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public Brush BorderBrush
{
get { return this.GetValue(BorderBrushProperty); }
set { this.SetValue(BorderBrushProperty, value); }
get { return GetValue(BorderBrushProperty); }
set { SetValue(BorderBrushProperty, value); }
}
/// <summary>
@ -125,8 +125,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public double BorderThickness
{
get { return this.GetValue(BorderThicknessProperty); }
set { this.SetValue(BorderThicknessProperty, value); }
get { return GetValue(BorderThicknessProperty); }
set { SetValue(BorderThicknessProperty, value); }
}
/// <summary>
@ -134,8 +134,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public string FontFamily
{
get { return this.GetValue(FontFamilyProperty); }
set { this.SetValue(FontFamilyProperty, value); }
get { return GetValue(FontFamilyProperty); }
set { SetValue(FontFamilyProperty, value); }
}
/// <summary>
@ -143,8 +143,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public double FontSize
{
get { return this.GetValue(FontSizeProperty); }
set { this.SetValue(FontSizeProperty, value); }
get { return GetValue(FontSizeProperty); }
set { SetValue(FontSizeProperty, value); }
}
/// <summary>
@ -152,8 +152,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public FontStyle FontStyle
{
get { return this.GetValue(FontStyleProperty); }
set { this.SetValue(FontStyleProperty, value); }
get { return GetValue(FontStyleProperty); }
set { SetValue(FontStyleProperty, value); }
}
/// <summary>
@ -161,8 +161,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public Brush Foreground
{
get { return this.GetValue(ForegroundProperty); }
set { this.SetValue(ForegroundProperty, value); }
get { return GetValue(ForegroundProperty); }
set { SetValue(ForegroundProperty, value); }
}
/// <summary>
@ -170,8 +170,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public Thickness Padding
{
get { return this.GetValue(PaddingProperty); }
set { this.SetValue(PaddingProperty, value); }
get { return GetValue(PaddingProperty); }
set { SetValue(PaddingProperty, value); }
}
/// <summary>
@ -179,8 +179,8 @@ namespace Perspex.Controls.Primitives
/// </summary>
public ControlTemplate Template
{
get { return this.GetValue(TemplateProperty); }
set { this.SetValue(TemplateProperty, value); }
get { return GetValue(TemplateProperty); }
set { SetValue(TemplateProperty, value); }
}
/// <inheritdoc/>
@ -188,26 +188,26 @@ namespace Perspex.Controls.Primitives
{
if (!_templateApplied)
{
this.ClearVisualChildren();
ClearVisualChildren();
if (this.Template != null)
if (Template != null)
{
_templateLog.Verbose("Creating control template");
var child = this.Template.Build(this);
var child = Template.Build(this);
// We need to call SetTemplatedParentAndApplyChildTemplates twice - once
// before the controls are added to the visual tree so that the logical
// tree can be set up before styling is applied.
((ISetLogicalParent)child).SetParent(this);
this.SetTemplatedParentAndApplyChildTemplates(child);
SetTemplatedParentAndApplyChildTemplates(child);
// And again after the controls are added to the visual tree, and have their
// styling and thus Template property set.
this.AddVisualChild((Visual)child);
this.SetTemplatedParentAndApplyChildTemplates(child);
AddVisualChild((Visual)child);
SetTemplatedParentAndApplyChildTemplates(child);
this.OnTemplateApplied();
OnTemplateApplied();
}
_templateApplied = true;
@ -239,7 +239,7 @@ namespace Perspex.Controls.Primitives
{
foreach (IControl child in control.GetVisualChildren())
{
this.SetTemplatedParentAndApplyChildTemplates(child);
SetTemplatedParentAndApplyChildTemplates(child);
}
}
}

18
src/Perspex.Controls/Primitives/Thumb.cs

@ -29,20 +29,20 @@ namespace Perspex.Controls.Primitives
public event EventHandler<VectorEventArgs> DragStarted
{
add { this.AddHandler(DragStartedEvent, value); }
remove { this.RemoveHandler(DragStartedEvent, value); }
add { AddHandler(DragStartedEvent, value); }
remove { RemoveHandler(DragStartedEvent, value); }
}
public event EventHandler<VectorEventArgs> DragDelta
{
add { this.AddHandler(DragDeltaEvent, value); }
remove { this.RemoveHandler(DragDeltaEvent, value); }
add { AddHandler(DragDeltaEvent, value); }
remove { RemoveHandler(DragDeltaEvent, value); }
}
public event EventHandler<VectorEventArgs> DragCompleted
{
add { this.AddHandler(DragCompletedEvent, value); }
remove { this.RemoveHandler(DragCompletedEvent, value); }
add { AddHandler(DragCompletedEvent, value); }
remove { RemoveHandler(DragCompletedEvent, value); }
}
protected virtual void OnDragStarted(VectorEventArgs e)
@ -67,7 +67,7 @@ namespace Perspex.Controls.Primitives
Vector = e.GetPosition(this) - _lastPoint.Value,
};
this.RaiseEvent(ev);
RaiseEvent(ev);
}
}
@ -82,7 +82,7 @@ namespace Perspex.Controls.Primitives
Vector = (Vector)_lastPoint,
};
this.RaiseEvent(ev);
RaiseEvent(ev);
}
protected override void OnPointerReleased(PointerEventArgs e)
@ -98,7 +98,7 @@ namespace Perspex.Controls.Primitives
Vector = (Vector)e.GetPosition(this),
};
this.RaiseEvent(ev);
RaiseEvent(ev);
}
}
}

10
src/Perspex.Controls/Primitives/ToggleButton.cs

@ -13,7 +13,7 @@ namespace Perspex.Controls.Primitives
static ToggleButton()
{
Control.PseudoClass(IsCheckedProperty, ":checked");
PseudoClass(IsCheckedProperty, ":checked");
}
public ToggleButton()
@ -22,18 +22,18 @@ namespace Perspex.Controls.Primitives
public bool IsChecked
{
get { return this.GetValue(IsCheckedProperty); }
set { this.SetValue(IsCheckedProperty, value); }
get { return GetValue(IsCheckedProperty); }
set { SetValue(IsCheckedProperty, value); }
}
protected override void OnClick(RoutedEventArgs e)
{
this.Toggle();
Toggle();
}
protected virtual void Toggle()
{
this.IsChecked = !this.IsChecked;
IsChecked = !IsChecked;
}
}
}

78
src/Perspex.Controls/Primitives/Track.cs

@ -10,13 +10,13 @@ namespace Perspex.Controls.Primitives
public class Track : Control
{
public static readonly PerspexProperty<double> MinimumProperty =
ScrollBar.MinimumProperty.AddOwner<Track>();
RangeBase.MinimumProperty.AddOwner<Track>();
public static readonly PerspexProperty<double> MaximumProperty =
ScrollBar.MaximumProperty.AddOwner<Track>();
RangeBase.MaximumProperty.AddOwner<Track>();
public static readonly PerspexProperty<double> ValueProperty =
ScrollBar.ValueProperty.AddOwner<Track>();
RangeBase.ValueProperty.AddOwner<Track>();
public static readonly PerspexProperty<double> ViewportSizeProperty =
ScrollBar.ViewportSizeProperty.AddOwner<Track>();
@ -29,76 +29,76 @@ namespace Perspex.Controls.Primitives
static Track()
{
Control.AffectsArrange(MinimumProperty);
Control.AffectsArrange(MaximumProperty);
Control.AffectsArrange(ValueProperty);
Control.AffectsMeasure(OrientationProperty);
AffectsArrange(MinimumProperty);
AffectsArrange(MaximumProperty);
AffectsArrange(ValueProperty);
AffectsMeasure(OrientationProperty);
}
public Track()
{
this.GetObservableWithHistory(ThumbProperty).Subscribe(val =>
GetObservableWithHistory(ThumbProperty).Subscribe(val =>
{
if (val.Item1 != null)
{
val.Item1.DragDelta -= this.ThumbDragged;
val.Item1.DragDelta -= ThumbDragged;
}
this.ClearVisualChildren();
ClearVisualChildren();
if (val.Item2 != null)
{
val.Item2.DragDelta += this.ThumbDragged;
this.AddVisualChild(val.Item2);
val.Item2.DragDelta += ThumbDragged;
AddVisualChild(val.Item2);
}
});
}
public double Minimum
{
get { return this.GetValue(MinimumProperty); }
set { this.SetValue(MinimumProperty, value); }
get { return GetValue(MinimumProperty); }
set { SetValue(MinimumProperty, value); }
}
public double Maximum
{
get { return this.GetValue(MaximumProperty); }
set { this.SetValue(MaximumProperty, value); }
get { return GetValue(MaximumProperty); }
set { SetValue(MaximumProperty, value); }
}
public double Value
{
get { return this.GetValue(ValueProperty); }
set { this.SetValue(ValueProperty, value); }
get { return GetValue(ValueProperty); }
set { SetValue(ValueProperty, value); }
}
public double ViewportSize
{
get { return this.GetValue(ViewportSizeProperty); }
set { this.SetValue(ViewportSizeProperty, value); }
get { return GetValue(ViewportSizeProperty); }
set { SetValue(ViewportSizeProperty, value); }
}
public Orientation Orientation
{
get { return this.GetValue(OrientationProperty); }
set { this.SetValue(OrientationProperty, value); }
get { return GetValue(OrientationProperty); }
set { SetValue(OrientationProperty, value); }
}
public Thumb Thumb
{
get { return this.GetValue(ThumbProperty); }
set { this.SetValue(ThumbProperty, value); }
get { return GetValue(ThumbProperty); }
set { SetValue(ThumbProperty, value); }
}
protected override Size MeasureOverride(Size availableSize)
{
var thumb = this.Thumb;
var thumb = Thumb;
if (thumb != null)
{
thumb.Measure(availableSize);
if (this.Orientation == Orientation.Horizontal)
if (Orientation == Orientation.Horizontal)
{
return new Size(0, thumb.DesiredSize.Height);
}
@ -113,13 +113,13 @@ namespace Perspex.Controls.Primitives
protected override Size ArrangeOverride(Size finalSize)
{
var thumb = this.Thumb;
var thumb = Thumb;
if (thumb != null)
{
var range = this.Maximum - this.Minimum;
var thumbFraction = this.ViewportSize / range;
var valueFraction = (this.Value - this.Minimum) / range;
var range = Maximum - Minimum;
var thumbFraction = ViewportSize / range;
var valueFraction = (Value - Minimum) / range;
if (double.IsNaN(valueFraction) || double.IsInfinity(valueFraction))
{
@ -131,7 +131,7 @@ namespace Perspex.Controls.Primitives
thumbFraction = 0;
}
if (this.Orientation == Orientation.Horizontal)
if (Orientation == Orientation.Horizontal)
{
var width = Math.Max(finalSize.Width * thumbFraction, thumb.MinWidth);
var x = (finalSize.Width - width) * valueFraction;
@ -150,25 +150,25 @@ namespace Perspex.Controls.Primitives
private void ThumbDragged(object sender, VectorEventArgs e)
{
double range = this.Maximum - this.Minimum;
double value = this.Value;
double range = Maximum - Minimum;
double value = Value;
double offset;
if (this.Orientation == Orientation.Horizontal)
if (Orientation == Orientation.Horizontal)
{
offset = e.Vector.X / ((this.Bounds.Size.Width - this.Thumb.Bounds.Size.Width) / range);
offset = e.Vector.X / ((Bounds.Size.Width - Thumb.Bounds.Size.Width) / range);
}
else
{
offset = e.Vector.Y * (range / (this.Bounds.Size.Height - this.Thumb.Bounds.Size.Height));
offset = e.Vector.Y * (range / (Bounds.Size.Height - Thumb.Bounds.Size.Height));
}
if (!double.IsNaN(offset) && !double.IsInfinity(offset))
{
value += offset;
value = Math.Max(value, this.Minimum);
value = Math.Min(value, this.Maximum);
this.Value = value;
value = Math.Max(value, Minimum);
value = Math.Min(value, Maximum);
Value = value;
}
}
}

4
src/Perspex.Controls/ProgressBar.cs

@ -28,8 +28,8 @@ namespace Perspex.Controls
{
if (_indicator != null)
{
double percent = this.Maximum == this.Minimum ? 1.0 : ((double)e.NewValue - this.Minimum) / (this.Maximum - this.Minimum);
_indicator.Width = this.Bounds.Width * percent;
double percent = Maximum == Minimum ? 1.0 : ((double)e.NewValue - Minimum) / (Maximum - Minimum);
_indicator.Width = Bounds.Width * percent;
}
}
}

6
src/Perspex.Controls/RadioButton.cs

@ -12,14 +12,14 @@ namespace Perspex.Controls
{
public RadioButton()
{
this.GetObservable(IsCheckedProperty).Subscribe(this.IsCheckedChanged);
GetObservable(IsCheckedProperty).Subscribe(IsCheckedChanged);
}
protected override void Toggle()
{
if (!this.IsChecked)
if (!IsChecked)
{
this.IsChecked = true;
IsChecked = true;
}
}

16
src/Perspex.Controls/RowDefinition.cs

@ -40,7 +40,7 @@ namespace Perspex.Controls
/// <param name="type">The height unit of the column.</param>
public RowDefinition(double value, GridUnitType type)
{
this.Height = new GridLength(value, type);
Height = new GridLength(value, type);
}
/// <summary>
@ -49,7 +49,7 @@ namespace Perspex.Controls
/// <param name="height">The height of the column.</param>
public RowDefinition(GridLength height)
{
this.Height = height;
Height = height;
}
/// <summary>
@ -66,8 +66,8 @@ namespace Perspex.Controls
/// </summary>
public double MaxHeight
{
get { return this.GetValue(MaxHeightProperty); }
set { this.SetValue(MaxHeightProperty, value); }
get { return GetValue(MaxHeightProperty); }
set { SetValue(MaxHeightProperty, value); }
}
/// <summary>
@ -75,8 +75,8 @@ namespace Perspex.Controls
/// </summary>
public double MinHeight
{
get { return this.GetValue(MinHeightProperty); }
set { this.SetValue(MinHeightProperty, value); }
get { return GetValue(MinHeightProperty); }
set { SetValue(MinHeightProperty, value); }
}
/// <summary>
@ -84,8 +84,8 @@ namespace Perspex.Controls
/// </summary>
public GridLength Height
{
get { return this.GetValue(HeightProperty); }
set { this.SetValue(HeightProperty, value); }
get { return GetValue(HeightProperty); }
set { SetValue(HeightProperty, value); }
}
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save