/V1/trunk/Source/CAL/Composite.Wpf/Regions/ItemMetadata.cs
C# | 99 lines | 41 code | 10 blank | 48 comment | 4 complexity | 4453bcd9df6a1d21f3e116bb30336546 MD5 | raw file
- //===============================================================================
- // Microsoft patterns & practices
- // Composite Application Guidance for Windows Presentation Foundation
- //===============================================================================
- // Copyright (c) Microsoft Corporation. All rights reserved.
- // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
- // OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
- // LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
- // FITNESS FOR A PARTICULAR PURPOSE.
- //===============================================================================
- // The example companies, organizations, products, domain names,
- // e-mail addresses, logos, people, places, and events depicted
- // herein are fictitious. No association with any real company,
- // organization, product, domain name, email address, logo, person,
- // places, or events is intended or should be inferred.
- //===============================================================================
-
- using System;
- using System.Windows;
-
- namespace Microsoft.Practices.Composite.Wpf.Regions
- {
- /// <summary>
- /// Defines a class that wraps an item and adds metadata for it.
- /// </summary>
- public class ItemMetadata : DependencyObject
- {
- /// <summary>
- /// The name of the wrapped item.
- /// </summary>
- public static readonly DependencyProperty NameProperty =
- DependencyProperty.Register("Name", typeof(string), typeof(ItemMetadata));
-
- /// <summary>
- /// Value indicating whether the wrapped item is considered active.
- /// </summary>
- public static readonly DependencyProperty IsActiveProperty =
- DependencyProperty.Register("IsActive", typeof(bool), typeof(ItemMetadata), new PropertyMetadata(DependencyPropertyChanged));
-
- /// <summary>
- /// Initializes a new instance of <see cref="ItemMetadata"/>.
- /// </summary>
- /// <param name="item">The item to wrap.</param>
- public ItemMetadata(object item)
- {
- //check for null
- this.Item = item;
- }
-
- /// <summary>
- /// Gets the wrapped item.
- /// </summary>
- /// <value>The wrapped item.</value>
- public object Item { get; private set; }
-
- /// <summary>
- /// Gets or sets a name for the wrapped item.
- /// </summary>
- /// <value>The name of the wrapped item.</value>
- public string Name
- {
- get { return (string)GetValue(NameProperty); }
- set { SetValue(NameProperty, value); }
- }
-
- /// <summary>
- /// Gets or sets a value indicating whether the wrapped item is considered active.
- /// </summary>
- /// <value><see langword="true" /> if the item should be considered active; otherwise <see langword="false" />.</value>
- public bool IsActive
- {
- get { return (bool)GetValue(IsActiveProperty); }
- set { SetValue(IsActiveProperty, value); }
- }
-
- /// <summary>
- /// Occurs when metadata on the item changes.
- /// </summary>
- public event EventHandler MetadataChanged;
-
- /// <summary>
- /// Explicitly invokes <see cref="MetadataChanged"/> to notify listeners.
- /// </summary>
- public void InvokeMetadataChanged()
- {
- EventHandler metadataChangedHandler = MetadataChanged;
- if (metadataChangedHandler != null) metadataChangedHandler(this, EventArgs.Empty);
- }
-
- private static void DependencyPropertyChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs args)
- {
- ItemMetadata itemMetadata = dependencyObject as ItemMetadata;
- if (itemMetadata != null)
- {
- itemMetadata.InvokeMetadataChanged();
- }
- }
- }
- }