#region Apache License 2.0
/*
Nuclex Foundation libraries for .NET
Copyright (C) 2002-2025 Markus Ewald / Nuclex Development Labs
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#endregion // Apache License 2.0
using System;
using Avalonia;
using Avalonia.Controls;
namespace Nuclex.Avalonia {
/// Additional properties that can be attached to Avalonia objects
public static class Properties {
#region class InvalidateMeasureOnChangeObserver
///
/// Invalidates the calculated measurement of the control that is reporting
/// a change to the property value
///
private class InvalidateMeasureOnChangeObserver :
IObserver> {
/// The one and only instance you need
public static readonly InvalidateMeasureOnChangeObserver Instance = new();
/// Called after all observers have been notified successfully
public void OnCompleted() {}
/// Reports when the observed control encountered an error
/// Error the observed control has encountered
public void OnError(Exception error) {}
/// Reports the updated value of the property to the observer
/// New value the property has assumed
public void OnNext(AvaloniaPropertyChangedEventArgs