5 using System.Collections.Generic;
7 using System.Windows.Controls;
8 using System.Windows.Input;
10 using SiliconStudio.Presentation.Collections;
12 namespace SiliconStudio.Presentation.Controls
16 private readonly ObservableList<PropertyViewItem> properties =
new ObservableList<PropertyViewItem>();
21 public static readonly DependencyPropertyKey HoveredItemPropertyKey = DependencyProperty.RegisterReadOnly(
"HoveredItem", typeof(
PropertyViewItem), typeof(
PropertyView),
new PropertyMetadata(null));
27 public static readonly RoutedEvent PrepareItemEvent = EventManager.RegisterRoutedEvent(
"PrepareItem", RoutingStrategy.Bubble, typeof(EventHandler<PropertyViewItemEventArgs>), typeof(
PropertyView));
34 public static readonly RoutedEvent ClearItemEvent = EventManager.RegisterRoutedEvent(
"ClearItem", RoutingStrategy.Bubble, typeof(EventHandler<PropertyViewItemEventArgs>), typeof(
PropertyView));
41 public IReadOnlyCollection<PropertyViewItem> Properties {
get {
return properties; } }
46 public PropertyViewItem HoveredItem {
get {
return (
PropertyViewItem)GetValue(HoveredItemPropertyKey.DependencyProperty); }
private set { SetValue(HoveredItemPropertyKey, value); } }
52 public event EventHandler<PropertyViewItemEventArgs> PrepareItem { add { AddHandler(PrepareItemEvent, value); }
remove { RemoveHandler(PrepareItemEvent, value); } }
58 public event EventHandler<PropertyViewItemEventArgs> ClearItem { add { AddHandler(ClearItemEvent, value); }
remove { RemoveHandler(ClearItemEvent, value); } }
60 internal void ItemMouseMove(
object sender, MouseEventArgs e)
63 if (item != null && item.CanBeHovered)
77 return new PropertyViewItem(
this);
82 return item is PropertyViewItem;
87 base.PrepareContainerForItemOverride(element, item);
88 var container = (PropertyViewItem)element;
89 properties.Add(container);
95 var container = (PropertyViewItem)element;
97 properties.Remove(container);
98 base.ClearContainerForItemOverride(element, item);
override DependencyObject GetContainerForItemOverride()
override void PrepareContainerForItemOverride(DependencyObject element, object item)
override void ClearContainerForItemOverride(DependencyObject element, object item)
override void OnMouseLeave(MouseEventArgs e)
override bool IsItemItsOwnContainerOverride(object item)