Compare Markup Extension
Overview
The Compare markup extension is a XAML-friendly wrapper around the CommunityToolkit.Maui CompareConverter. It simplifies the comparison of values and returns one of two objects, depending on whether the value of the comparison.
Unlike the underlying converter, all properties exposed by the markup extension are bindable. This allows values to be supplied through data bindings and ensures the conversion result automatically updates whenever the source value, ComparisonValue, ComparisonOperator, TrueObject, or FalseObject changes.
Experimental Feature
This feature is experimental and has not been fully tested. Its API and behavior may change in future releases, and you may encounter unexpected issues. Use with caution and thoroughly test it in your own application before relying on it in production.
XAML Namespace
Fields
| Name | Description |
|---|---|
| ComparisonOperatorProperty | Bindable property for ComparisonOperator |
| ComparisonValueProperty | Bindable property for ComparisonValue |
| FalseObjectProperty | Bindable property for FalseValue. |
| TrueObjectProperty | Bindable property for TrueValue. |
| ValueProperty | Bindable property for Value. |
Properties
| Name | Description |
|---|---|
| ComparisonOperator | Gets or sets the comparison operator. |
| ComparisonValue | Gets or sets the secondary value. |
| FalseObject | Gets or sets the false value. |
| TrueObject | Gets or sets the true value. |
| Value | Gets or sets the primary value. |
ComparisonOperator Property
Gets or sets the comparison type. Defaults to OperatorType.Equal.
public CompareConverter.OperatorType ComparisonOperator { get; set; } = CompareConverter.OperatorType.Equal;
ComparisonValue Property
Gets or sets a primary value.
FalseObject Property
Gets or sets the value that will be returned if the comparison result is false.
TrueObject Property
Gets or sets the value that will be returned if the comparison result is true.
Value Property
Gets or sets a primary value.
Example
<ContentPage
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:sqm="clr-namespace:SQuan.Helpers.Maui;assembly=SQuan.Helpers.Maui">
<VerticalStackLayout>
<Slider x:Name="slider" MinimumValue="0" MaximumVaue="100" Value="20" />
<Slider x:Name="slider2" MinimumValue="0" MaximumVaue="100" Value="50" />
<BoxView
WidthRequest="30"
HeightRequest="30"
Color="{sqm:Compare Value={Binding Value,
x:DataType=Slider,
Source={Reference slider}},
ComparisonValue={Binding Value,
x:DataType=Slider,
Source={Reference slider2}},
ComparisonOperator=GreaterOrEqual,
TrueObject={Binding Source=Green},
FalseObject={Binding Source=Red}" />
</VerticalStackLayout>
</ContentPage>