FIXES
This commit is contained in:
@@ -612,11 +612,11 @@ public partial class ObservableCollection<TValue, TViewModel> :
|
|||||||
Value = value;
|
Value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnChanged(TValue? value)
|
protected virtual void Changed(TValue? value)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
partial void OnValueChanged(TValue? value) => OnChanged(value);
|
partial void OnValueChanged(TValue? value) => Changed(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public partial class ObservableCollection<TKey, TValue, TViewModel> :
|
public partial class ObservableCollection<TKey, TValue, TViewModel> :
|
||||||
|
|||||||
@@ -1,28 +1,46 @@
|
|||||||
using CommunityToolkit.Mvvm.Messaging;
|
using CommunityToolkit.Mvvm.Messaging;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
namespace Toolkit.Foundation;
|
namespace Toolkit.Foundation;
|
||||||
|
|
||||||
public partial class ObservableConfiguration<TConfiguration, TValue>(IServiceProvider provider,
|
public partial class ObservableConfiguration<TConfiguration, TValue> :
|
||||||
IServiceFactory factory,
|
Observable<TValue>,
|
||||||
IMessenger messenger,
|
IRecipient<ChangedEventArgs<TConfiguration>>
|
||||||
IDisposer disposer,
|
|
||||||
TConfiguration configuration,
|
|
||||||
IWritableConfiguration<TConfiguration> writer,
|
|
||||||
Func<TConfiguration, TValue?> read,
|
|
||||||
Action<TValue?, TConfiguration> write) :
|
|
||||||
Observable<TValue>(provider, factory, messenger, disposer),
|
|
||||||
IHandler<ChangedEventArgs<TConfiguration>>
|
|
||||||
where TConfiguration : class
|
where TConfiguration : class
|
||||||
{
|
{
|
||||||
public void Handle(ChangedEventArgs<TConfiguration> args)
|
private readonly TConfiguration configuration;
|
||||||
|
private readonly IWritableConfiguration<TConfiguration> writer;
|
||||||
|
private readonly Func<TConfiguration, TValue?> read;
|
||||||
|
private readonly Action<TValue?, TConfiguration> write;
|
||||||
|
private readonly IDispatcher dispatcher;
|
||||||
|
|
||||||
|
public ObservableConfiguration(IServiceProvider provider,
|
||||||
|
IServiceFactory factory,
|
||||||
|
IMessenger messenger,
|
||||||
|
IDisposer disposer,
|
||||||
|
TConfiguration configuration,
|
||||||
|
IWritableConfiguration<TConfiguration> writer,
|
||||||
|
Func<TConfiguration, TValue?> read,
|
||||||
|
Action<TValue?, TConfiguration> write,
|
||||||
|
TValue? value = default) : base(provider, factory, messenger, disposer)
|
||||||
|
{
|
||||||
|
this.configuration = configuration;
|
||||||
|
this.writer = writer;
|
||||||
|
this.read = read;
|
||||||
|
this.write = write;
|
||||||
|
|
||||||
|
dispatcher = provider.GetRequiredService<IDispatcher>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Receive(ChangedEventArgs<TConfiguration> args)
|
||||||
{
|
{
|
||||||
if (args.Sender is TConfiguration configuration)
|
if (args.Sender is TConfiguration configuration)
|
||||||
{
|
{
|
||||||
Value = read(configuration);
|
dispatcher.Invoke(() => Value = read(configuration));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Activated() => Value = read(configuration);
|
protected override void Activated() => dispatcher.Invoke(() => Value = read(configuration));
|
||||||
|
|
||||||
protected override void Changed(TValue? value)
|
protected override void Changed(TValue? value)
|
||||||
{
|
{
|
||||||
@@ -30,5 +48,7 @@ public partial class ObservableConfiguration<TConfiguration, TValue>(IServicePro
|
|||||||
{
|
{
|
||||||
writer.Write(args => write(value, args));
|
writer.Write(args => write(value, args));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
base.Changed(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
using CommunityToolkit.Mvvm.Messaging;
|
using CommunityToolkit.Mvvm.Messaging;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
|
|
||||||
namespace Toolkit.Foundation;
|
namespace Toolkit.Foundation;
|
||||||
|
|
||||||
public partial class ObservableConfigurationCollection<TConfiguration, TValue, TViewModel> :
|
public partial class ObservableConfigurationCollection<TConfiguration, TValue, TViewModel> :
|
||||||
ObservableCollection<TValue, TViewModel>,
|
ObservableCollection<TValue, TViewModel>,
|
||||||
IHandler<ChangedEventArgs<TConfiguration>>
|
IRecipient<ChangedEventArgs<TConfiguration>>
|
||||||
where TConfiguration : class
|
where TConfiguration : class
|
||||||
where TViewModel : notnull,
|
where TViewModel : notnull,
|
||||||
IDisposable
|
IDisposable
|
||||||
@@ -13,6 +14,7 @@ public partial class ObservableConfigurationCollection<TConfiguration, TValue, T
|
|||||||
private readonly Func<TConfiguration, TValue?> read;
|
private readonly Func<TConfiguration, TValue?> read;
|
||||||
private readonly Action<TValue?, TConfiguration> write;
|
private readonly Action<TValue?, TConfiguration> write;
|
||||||
private readonly IWritableConfiguration<TConfiguration> writer;
|
private readonly IWritableConfiguration<TConfiguration> writer;
|
||||||
|
private readonly IDispatcher dispatcher;
|
||||||
|
|
||||||
public ObservableConfigurationCollection(IServiceProvider provider,
|
public ObservableConfigurationCollection(IServiceProvider provider,
|
||||||
IServiceFactory factory,
|
IServiceFactory factory,
|
||||||
@@ -29,6 +31,7 @@ public partial class ObservableConfigurationCollection<TConfiguration, TValue, T
|
|||||||
this.read = read;
|
this.read = read;
|
||||||
this.write = write;
|
this.write = write;
|
||||||
|
|
||||||
|
dispatcher = provider.GetRequiredService<IDispatcher>();
|
||||||
Value = value;
|
Value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,29 +51,27 @@ public partial class ObservableConfigurationCollection<TConfiguration, TValue, T
|
|||||||
this.read = read;
|
this.read = read;
|
||||||
this.write = write;
|
this.write = write;
|
||||||
|
|
||||||
|
dispatcher = provider.GetRequiredService<IDispatcher>();
|
||||||
Value = value;
|
Value = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Handle(ChangedEventArgs<TConfiguration> args)
|
public void Receive(ChangedEventArgs<TConfiguration> args)
|
||||||
{
|
{
|
||||||
if (args.Sender is TConfiguration configuration)
|
if (args.Sender is TConfiguration configuration)
|
||||||
{
|
{
|
||||||
Value = read(configuration);
|
dispatcher.Invoke(() => Value = read(configuration));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Activated()
|
protected override void Activated() => dispatcher.Invoke(() => Value = read(configuration));
|
||||||
{
|
|
||||||
Value = read(configuration);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void OnChanged(TValue? value)
|
protected override void Changed(TValue? value)
|
||||||
{
|
{
|
||||||
if (IsActive)
|
if (IsActive)
|
||||||
{
|
{
|
||||||
writer.Write(args => write(value, args));
|
writer.Write(args => write(value, args));
|
||||||
}
|
}
|
||||||
|
|
||||||
base.OnChanged(value);
|
base.Changed(value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
using Microsoft.UI.Xaml;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Toolkit.UI.WinUI;
|
||||||
|
|
||||||
|
public class BoolToVisibilityConverter :
|
||||||
|
ValueConverter<bool, Visibility>
|
||||||
|
{
|
||||||
|
public Visibility TrueValue { get; set; } = Visibility.Visible;
|
||||||
|
|
||||||
|
public Visibility FalseValue { get; set; } = Visibility.Collapsed;
|
||||||
|
|
||||||
|
protected override Visibility ConvertTo(bool value,
|
||||||
|
Type? targetType,
|
||||||
|
object? parameter,
|
||||||
|
string? language)
|
||||||
|
{
|
||||||
|
_ = bool.TryParse(value.ToString(), out bool parsed);
|
||||||
|
return parsed ? TrueValue : FalseValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -3,7 +3,7 @@ using Toolkit.Foundation;
|
|||||||
|
|
||||||
namespace Toolkit.UI.WinUI;
|
namespace Toolkit.UI.WinUI;
|
||||||
|
|
||||||
public class ValidationBooleanConverter :
|
public class ValidationToBoolConverter :
|
||||||
ValueConverter<IReadOnlyIndexDictionary<string, string>, bool>
|
ValueConverter<IReadOnlyIndexDictionary<string, string>, bool>
|
||||||
{
|
{
|
||||||
public string? Property { get; set; }
|
public string? Property { get; set; }
|
||||||
+1
-1
@@ -3,7 +3,7 @@ using Toolkit.Foundation;
|
|||||||
|
|
||||||
namespace Toolkit.UI.WinUI;
|
namespace Toolkit.UI.WinUI;
|
||||||
|
|
||||||
public class ValidationMessageConverter :
|
public class ValidationToMessageConverter :
|
||||||
ValueConverter<IReadOnlyIndexDictionary<string, string>, string?>
|
ValueConverter<IReadOnlyIndexDictionary<string, string>, string?>
|
||||||
{
|
{
|
||||||
public string? Property { get; set; }
|
public string? Property { get; set; }
|
||||||
Reference in New Issue
Block a user