Browse Source

Fix #1531 by making IStyle an IAvaloniaObject.

pull/1629/head
Jeremy Koritzinsky 8 years ago
parent
commit
4eec8b4271
  1. 18
      src/Avalonia.Controls/Design.cs
  2. 2
      src/Avalonia.Styling/Styling/IStyle.cs
  3. 2
      src/Avalonia.Styling/Styling/Style.cs

18
src/Avalonia.Controls/Design.cs

@ -1,5 +1,6 @@
using System.Runtime.CompilerServices;
using Avalonia.Styling;
namespace Avalonia.Controls
{
@ -45,23 +46,18 @@ namespace Avalonia.Controls
{
return control.GetValue(DataContextProperty);
}
static readonly ConditionalWeakTable<object, Control> Substitutes = new ConditionalWeakTable<object, Control>();
public static readonly AttachedProperty<Control> PreviewWithProperty = AvaloniaProperty
.RegisterAttached<AvaloniaObject, Control>("PreviewWith", typeof (Design));
.RegisterAttached<IStyle, Control>("PreviewWith", typeof (Design));
public static void SetPreviewWith(object target, Control control)
public static void SetPreviewWith(IStyle target, Control control)
{
Substitutes.Remove(target);
Substitutes.Add(target, control);
target.SetValue(PreviewWithProperty, control);
}
public static Control GetPreviewWith(object target)
public static Control GetPreviewWith(IStyle target)
{
Control rv;
Substitutes.TryGetValue(target, out rv);
return rv;
return target.GetValue(PreviewWithProperty);
}
public static void ApplyDesignModeProperties(Control target, Control source)

2
src/Avalonia.Styling/Styling/IStyle.cs

@ -8,7 +8,7 @@ namespace Avalonia.Styling
/// <summary>
/// Defines the interface for styles.
/// </summary>
public interface IStyle : IResourceNode
public interface IStyle : IAvaloniaObject, IResourceNode
{
/// <summary>
/// Attaches the style to a control if the style's selector matches.

2
src/Avalonia.Styling/Styling/Style.cs

@ -15,7 +15,7 @@ namespace Avalonia.Styling
/// <summary>
/// Defines a style.
/// </summary>
public class Style : IStyle, ISetStyleParent
public class Style : AvaloniaObject, IStyle, ISetStyleParent
{
private static Dictionary<IStyleable, List<IDisposable>> _applied =
new Dictionary<IStyleable, List<IDisposable>>();

Loading…
Cancel
Save