Files
BeWoPlaner/BeWo/Core/BindingDecoratorBase.cs
2016-06-27 01:45:38 +02:00

346 lines
8.1 KiB
C#

using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Globalization;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Markup;
namespace BeWo.Core
{
[MarkupExtensionReturnType(typeof(object))]
public abstract class BindingDecoratorBase : MarkupExtension
{
private Binding _WrappedBinding = new Binding();
[DefaultValue(null)]
public object AsyncState
{
get
{
return this._WrappedBinding.AsyncState;
}
set
{
this._WrappedBinding.AsyncState = value;
}
}
[Browsable(false)]
public Binding Binding
{
get
{
return this._WrappedBinding;
}
set
{
this._WrappedBinding = value;
}
}
[DefaultValue(false)]
public bool BindsDirectlyToSource
{
get
{
return this._WrappedBinding.BindsDirectlyToSource;
}
set
{
this._WrappedBinding.BindsDirectlyToSource = value;
}
}
[DefaultValue(null)]
public IValueConverter Converter
{
get
{
return this._WrappedBinding.Converter;
}
set
{
this._WrappedBinding.Converter = value;
}
}
[TypeConverter(typeof(CultureInfoIetfLanguageTagConverter))]
[DefaultValue(null)]
public CultureInfo ConverterCulture
{
get
{
return this._WrappedBinding.ConverterCulture;
}
set
{
this._WrappedBinding.ConverterCulture = value;
}
}
[DefaultValue(null)]
public object ConverterParameter
{
get
{
return this._WrappedBinding.ConverterParameter;
}
set
{
this._WrappedBinding.ConverterParameter = value;
}
}
[DefaultValue(null)]
public string ElementName
{
get
{
return this._WrappedBinding.ElementName;
}
set
{
this._WrappedBinding.ElementName = value;
}
}
[DefaultValue(null)]
public object FallbackValue
{
get
{
return this._WrappedBinding.FallbackValue;
}
set
{
this._WrappedBinding.FallbackValue = value;
}
}
[DefaultValue(false)]
public bool IsAsync
{
get
{
return this._WrappedBinding.IsAsync;
}
set
{
this._WrappedBinding.IsAsync = value;
}
}
[DefaultValue(BindingMode.Default)]
public BindingMode Mode
{
get
{
return this._WrappedBinding.Mode;
}
set
{
this._WrappedBinding.Mode = value;
}
}
[DefaultValue(false)]
public bool NotifyOnSourceUpdated
{
get
{
return this._WrappedBinding.NotifyOnSourceUpdated;
}
set
{
this._WrappedBinding.NotifyOnSourceUpdated = value;
}
}
[DefaultValue(false)]
public bool NotifyOnTargetUpdated
{
get
{
return this._WrappedBinding.NotifyOnTargetUpdated;
}
set
{
this._WrappedBinding.NotifyOnTargetUpdated = value;
}
}
[DefaultValue(false)]
public bool NotifyOnValidationError
{
get
{
return this._WrappedBinding.NotifyOnValidationError;
}
set
{
this._WrappedBinding.NotifyOnValidationError = value;
}
}
[DefaultValue(null)]
public PropertyPath Path
{
get
{
return this._WrappedBinding.Path;
}
set
{
this._WrappedBinding.Path = value;
}
}
[DefaultValue(null)]
public RelativeSource RelativeSource
{
get
{
return this._WrappedBinding.RelativeSource;
}
set
{
this._WrappedBinding.RelativeSource = value;
}
}
[DefaultValue(null)]
public object Source
{
get
{
return this._WrappedBinding.Source;
}
set
{
this._WrappedBinding.Source = value;
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public UpdateSourceExceptionFilterCallback UpdateSourceExceptionFilter
{
get
{
return this._WrappedBinding.UpdateSourceExceptionFilter;
}
set
{
this._WrappedBinding.UpdateSourceExceptionFilter = value;
}
}
[DefaultValue(UpdateSourceTrigger.Default)]
public UpdateSourceTrigger UpdateSourceTrigger
{
get
{
return this._WrappedBinding.UpdateSourceTrigger;
}
set
{
this._WrappedBinding.UpdateSourceTrigger = value;
}
}
[DefaultValue(false)]
public bool ValidatesOnDataErrors
{
get
{
return this._WrappedBinding.ValidatesOnDataErrors;
}
set
{
this._WrappedBinding.ValidatesOnDataErrors = value;
}
}
[DefaultValue(false)]
public bool ValidatesOnExceptions
{
get
{
return this._WrappedBinding.ValidatesOnExceptions;
}
set
{
this._WrappedBinding.ValidatesOnExceptions = value;
}
}
[DefaultValue(null)]
public Collection<ValidationRule> ValidationRules
{
get
{
return this._WrappedBinding.ValidationRules;
}
}
[DefaultValue(null)]
public string XPath
{
get
{
return this._WrappedBinding.XPath;
}
set
{
this._WrappedBinding.XPath = value;
}
}
public override object ProvideValue(IServiceProvider pProvider)
{
return this._WrappedBinding.ProvideValue(pProvider);
}
protected virtual bool TryGetTargetItems(IServiceProvider pProvider, out DependencyObject pTarget, out DependencyProperty pDP)
{
pTarget = null;
pDP = null;
if (pProvider == null)
{
return false;
}
IProvideValueTarget service = (IProvideValueTarget)pProvider.GetService(typeof(IProvideValueTarget));
if (service == null)
{
return false;
}
pTarget = service.TargetObject as DependencyObject;
pDP = service.TargetProperty as DependencyProperty;
return pTarget != null && pDP != null;
}
}
}