![]() |
VOOZH | about |
dotnet add package HKW.CommonValueConverters --version 0.1.2
NuGet\Install-Package HKW.CommonValueConverters -Version 0.1.2
<PackageReference Include="HKW.CommonValueConverters" Version="0.1.2" />
<PackageVersion Include="HKW.CommonValueConverters" Version="0.1.2" />Directory.Packages.props
<PackageReference Include="HKW.CommonValueConverters" />Project file
paket add HKW.CommonValueConverters --version 0.1.2
#r "nuget: HKW.CommonValueConverters, 0.1.2"
#:package HKW.CommonValueConverters@0.1.2
#addin nuget:?package=HKW.CommonValueConverters&version=0.1.2Install as a Cake Addin
#tool nuget:?package=HKW.CommonValueConverters&version=0.1.2Install as a Cake Tool
A common value or multi value converter base
ConverterBase and CommonDependencyProperty
public class CommonDependencyProperty
{
public static CommonDependencyProperty<TProperty> Register<TOwner, TProperty>(
string propertyName
)
{
var dependencyProperty = DependencyProperty.Register(
propertyName,
typeof(TProperty),
typeof(TOwner)
);
return new(dependencyProperty);
}
public static CommonDependencyProperty<TProperty> Register<TOwner, TProperty>(
string propertyName,
TProperty defaultValue
)
{
var dependencyProperty = DependencyProperty.Register(
propertyName,
typeof(TProperty),
typeof(TOwner),
new PropertyMetadata(defaultValue)
);
return new(dependencyProperty);
}
}
public abstract class ConverterBase : DependencyObject, ICommonValueConverter
{
protected ConverterBase()
{
CommonConverterBase.UnsetValue = DependencyProperty.UnsetValue;
}
public static readonly object UnsetValue = DependencyProperty.UnsetValue;
public PreferredCulture PreferredCulture { get; set; } =
ValueConvertersConfig.DefaultPreferredCulture;
public T GetValue<T>(CommonDependencyProperty<T> commonDependencyProperty)
{
if (commonDependencyProperty.Value is not DependencyProperty dependency)
throw new ArgumentNullException(nameof(commonDependencyProperty));
return (T)GetValue(dependency);
}
public void SetValue<T>(CommonDependencyProperty<T> commonDependencyProperty, T value)
{
if (commonDependencyProperty.Value is not DependencyProperty dependency)
throw new ArgumentNullException(nameof(commonDependencyProperty));
SetValue(dependency, value);
}
public static readonly CommonDependencyProperty<object> DefaultResultProperty =
CommonDependencyProperty.Register<ConverterBase, object>(nameof(DefaultResult));
public object DefaultResult
{
get => GetValue(DefaultResultProperty);
set => SetValue(DefaultResultProperty, value);
}
public static readonly CommonDependencyProperty<PreferredCulture> PreferredCultureProperty =
CommonDependencyProperty.Register<ConverterBase, PreferredCulture>(
nameof(PreferredCulture)
);
public PreferredCulture PreferredCulture
{
get => GetValue(PreferredCultureProperty);
set => SetValue(PreferredCultureProperty, value);
}
}
public abstract class ValueConverterBase : ConverterBase, IValueConverter
{
private CommonValueConverters.ValueConverterBase? _commonValueConverter;
public CommonValueConverters.ValueConverterBase? CommonValueConverter
{
get => _commonValueConverter;
set => CommonValueConverterInitialize(_commonValueConverter = value!);
}
// Add GetDefaultResult action when setting CommonValueConverter
public virtual void CommonValueConverterInitialize(
CommonValueConverters.ValueConverterBase commonValueConverter
)
{
commonValueConverter.GetDefaultResult = () => DefaultResult;
}
public virtual object? Convert(
object? value,
Type? targetType,
object? parameter,
CultureInfo? culture
)
{
return CommonValueConverter?.Convert(value, targetType, parameter, culture);
}
public virtual object? ConvertBack(
object? value,
Type? targetType,
object? parameter,
CultureInfo? culture
)
{
return CommonValueConverter?.ConvertBack(value, targetType, parameter, culture);
}
object? IValueConverter.Convert(
object value,
Type targetType,
object parameter,
CultureInfo culture
)
{
return Convert(
value,
targetType,
parameter,
ValueConvertersConfig.SelectCulture(PreferredCulture, () => culture)
);
}
object? IValueConverter.ConvertBack(
object value,
Type targetType,
object parameter,
CultureInfo culture
)
{
return ConvertBack(
value,
targetType,
parameter,
ValueConvertersConfig.SelectCulture(PreferredCulture, () => culture)
);
}
}
public class BoolToValueConverter<T> : InvertibleValueConverterBase
{
/// <inheritdoc/>
public BoolToValueConverter()
{
CommonValueConverter = new CommonValueConverters.BoolToValueConverter<T>()
{
GetTrueValue = () => TrueValue,
GetFalseValue = () => FalseValue,
GetNullValue = () => NullValue,
GetIsNullable = () => IsNullable,
};
}
public static readonly CommonDependencyProperty<T> TrueValueProperty =
CommonDependencyProperty.Register<BoolToValueConverter<T>, T>(nameof(TrueValue));
public T TrueValue
{
get => GetValue(TrueValueProperty);
set => SetValue(TrueValueProperty, value);
}
public static readonly CommonDependencyProperty<T> FalseValueProperty =
CommonDependencyProperty.Register<BoolToValueConverter<T>, T>(nameof(FalseValue));
public T FalseValue
{
get => GetValue(FalseValueProperty);
set => SetValue(FalseValueProperty, value);
}
public static readonly CommonDependencyProperty<bool> IsNullableProperty =
CommonDependencyProperty.Register<BoolToValueConverter<T>, bool>(nameof(IsNullable));
public bool IsNullable
{
get => GetValue(IsNullableProperty);
set => SetValue(IsNullableProperty, value);
}
public static readonly CommonDependencyProperty<T> NullValueProperty =
CommonDependencyProperty.Register<BoolToValueConverter<T>, T>(nameof(NullValue));
public T NullValue
{
get => GetValue(NullValueProperty);
set => SetValue(NullValueProperty, value);
}
}
public class BoolToVisibilityConverter : BoolToValueConverter<Visibility>
{
public BoolToVisibilityConverter()
{
TrueValue = Visibility.Visible;
FalseValue = Visibility.Collapsed;
}
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 1 NuGet packages that depend on HKW.CommonValueConverters:
| Package | Downloads |
|---|---|
|
HKW.WPF
A dedicated WPF library providing Collections, TypeExtension, MVVMDialogs, and other features. |
This package is not used by any popular GitHub repositories.