- presentationmodeldemo.zip
- App.Configuration.Wpf
- App.Configuration
- App.Core
- App.Data
- libs
- AttachedCommandBehavior.dll
- Castle.Core.dll
- Castle.DynamicProxy2.dll
- Castle.MicroKernel.dll
- Castle.Windsor.dll
- PresentationModelBase
- PresentationModelDemo.sln
- WPFUI
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using PresentationModelBase;
using System.Reflection;
namespace App.Configuration.Wpf
{
//this property will tell if the PresentationModel is doing
//some work in background
class IsWorkingPropertyDescriptor : PropertyDescriptor
{
public IsWorkingPropertyDescriptor() :
base(
TypeDescriptor.CreateProperty
(typeof(PresentationModel), "IsWorking", typeof(bool), null))
{
_propertyChangeNotification = typeof(PresentationModel).GetMethod("OnPropertyChanged", BindingFlags.NonPublic | BindingFlags.Instance);
}
MethodInfo _propertyChangeNotification;
static Dictionary<PresentationModel, bool> _propertyValues = new Dictionary<PresentationModel, bool>();
public override bool CanResetValue(object component)
{
return true;
}
public override Type ComponentType
{
get { return typeof(PresentationModel); }
}
public override object GetValue(object component)
{
PresentationModel pm = (PresentationModel)component;
if (!_propertyValues.ContainsKey(pm))
{
_propertyValues.Add(pm, false);
}
return _propertyValues[pm];
}
public override bool IsReadOnly
{
get { return false; }
}
public override Type PropertyType
{
get { return typeof(bool); }
}
public override void ResetValue(object component)
{
SetValue(component, false);
}
public override void SetValue(object component, object value)
{
PresentationModel pm = (PresentationModel)component;
if (!_propertyValues.ContainsKey(pm))
{
_propertyValues.Add(pm, (bool)value);
}
else
_propertyValues[pm] = (bool)value;
_propertyChangeNotification.Invoke(component, new object[] { "IsWorking" });
}
public override bool ShouldSerializeValue(object component)
{
return false;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.