Browse Source

Highlight hovered control in devtools.

pull/403/head
Steven Kirk 10 years ago
parent
commit
69d98efeeb
  1. 13
      src/Perspex.Controls/Generators/ItemContainerEventArgs.cs
  2. 19
      src/Perspex.Controls/Generators/TreeContainerIndex.cs
  3. 2
      src/Perspex.Controls/Primitives/HeaderedItemsControl.cs
  4. 19
      src/Perspex.Diagnostics/Views/TreePage.paml.cs

13
src/Perspex.Controls/Generators/ItemContainerEventArgs.cs

@ -12,6 +12,19 @@ namespace Perspex.Controls.Generators
/// </summary>
public class ItemContainerEventArgs : EventArgs
{
/// <summary>
/// Initializes a new instance of the <see cref="ItemContainerEventArgs"/> class.
/// </summary>
/// <param name="startingIndex">The index of the first container in the source items.</param>
/// <param name="container">The container.</param>
public ItemContainerEventArgs(
int startingIndex,
ItemContainer container)
{
StartingIndex = startingIndex;
Containers = new[] { container };
}
/// <summary>
/// Initializes a new instance of the <see cref="ItemContainerEventArgs"/> class.
/// </summary>

19
src/Perspex.Controls/Generators/TreeContainerIndex.cs

@ -1,6 +1,7 @@
// Copyright (c) The Perspex Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using System.Collections.Generic;
namespace Perspex.Controls.Generators
@ -19,6 +20,16 @@ namespace Perspex.Controls.Generators
private readonly Dictionary<object, IControl> _itemToContainer = new Dictionary<object, IControl>();
private readonly Dictionary<IControl, object> _containerToItem = new Dictionary<IControl, object>();
/// <summary>
/// Signalled whenever new containers are materialized.
/// </summary>
public event EventHandler<ItemContainerEventArgs> Materialized;
/// <summary>
/// Event raised whenever containers are dematerialized.
/// </summary>
public event EventHandler<ItemContainerEventArgs> Dematerialized;
/// <summary>
/// Gets the currently materialized containers.
/// </summary>
@ -33,6 +44,10 @@ namespace Perspex.Controls.Generators
{
_itemToContainer.Add(item, container);
_containerToItem.Add(container, item);
Materialized?.Invoke(
this,
new ItemContainerEventArgs(0, new ItemContainer(container, item, 0)));
}
/// <summary>
@ -44,6 +59,10 @@ namespace Perspex.Controls.Generators
var item = _containerToItem[container];
_containerToItem.Remove(container);
_itemToContainer.Remove(item);
Dematerialized?.Invoke(
this,
new ItemContainerEventArgs(0, new ItemContainer(container, item, 0)));
}
/// <summary>

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

@ -51,8 +51,8 @@ namespace Perspex.Controls.Primitives
/// <inheritdoc/>
protected override void OnTemplateApplied(TemplateAppliedEventArgs e)
{
base.OnTemplateApplied(e);
HeaderPresenter = e.NameScope.Find<ContentPresenter>("PART_HeaderPresenter");
base.OnTemplateApplied(e);
}
}
}

19
src/Perspex.Diagnostics/Views/TreePage.paml.cs

@ -1,4 +1,5 @@
using Perspex.Controls;
using Perspex.Controls.Generators;
using Perspex.Controls.Primitives;
using Perspex.Controls.Shapes;
using Perspex.Diagnostics.ViewModels;
@ -11,10 +12,12 @@ namespace Perspex.Diagnostics.Views
public class TreePageView : UserControl
{
private Control _adorner;
private TreeView _tree;
public TreePageView()
{
this.InitializeComponent();
_tree.ItemContainerGenerator.Index.Materialized += TreeViewItemMaterialized;
}
protected void AddAdorner(object sender, PointerEventArgs e)
@ -46,6 +49,22 @@ namespace Perspex.Diagnostics.Views
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
_tree = this.FindControl<TreeView>("tree");
}
private void TreeViewItemMaterialized(object sender, ItemContainerEventArgs e)
{
var item = (TreeViewItem)e.Containers[0].ContainerControl;
item.TemplateApplied += TreeViewItemTemplateApplied;
}
private void TreeViewItemTemplateApplied(object sender, TemplateAppliedEventArgs e)
{
var item = (TreeViewItem)sender;
var header = item.HeaderPresenter.Child;
header.PointerEnter += AddAdorner;
header.PointerLeave += RemoveAdorner;
item.TemplateApplied -= TreeViewItemTemplateApplied;
}
}
}

Loading…
Cancel
Save