MultiConverter
Funkcja MultiConverter
konwertuje wartość przychodzącą przy użyciu wszystkich konwerterów przychodzących w sekwencji. Kolejność, w jakiej są używane konwertery, zależy od kolejności, w jakiej są zdefiniowane.
Składnia
W tym przykładzie pokazano, jak używać z MultiConverter
elementami IsEqualConverter
i TextCaseConverter
. Konwertuje wprowadzony tekst na wielkie litery , a następnie sprawdza, czy jest on równy ciągowi "MAUI", spowoduje boolean
to wartość i jest powiązana z IsVisible
właściwością kontrolki Label
.
W tym przykładzie użyto parametru MultiConverterParameter
, który umożliwia zdefiniowanie parametru ConverterParameter dla typu konwertera MultiConverterParameter
ustawiono wartość .
XAML
Dołączanie przestrzeni nazw XAML
Aby można było używać zestawu narzędzi w języku XAML, należy dodać następujące xmlns
elementy do strony lub widoku:
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
W związku z tym następujące elementy:
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
</ContentPage>
Zostanie zmodyfikowana tak, aby zawierała następujące xmlns
elementy:
<ContentPage
x:Class="CommunityToolkit.Maui.Sample.Pages.MyPage"
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit">
</ContentPage>
Korzystanie z funkcji MultiConverter
Można MultiConverter
go użyć w następujący sposób w języku XAML:
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:toolkit="http://schemas.microsoft.com/dotnet/2022/maui/toolkit"
x:Class="CommunityToolkit.Maui.Sample.Pages.Converters.MultiConverterPage">
<ContentPage.Resources>
<ResourceDictionary>
<toolkit:MultiConverter x:Key="MyMultiConverter">
<toolkit:TextCaseConverter />
<toolkit:IsEqualConverter />
</toolkit:MultiConverter>
<x:Array x:Key="MultiParams"
Type="{x:Type toolkit:MultiConverterParameter}">
<toolkit:MultiConverterParameter
ConverterType="{x:Type toolkit:TextCaseConverter}"
Value="{x:Static toolkit:TextCaseType.Upper}" />
<toolkit:MultiConverterParameter
ConverterType="{x:Type toolkit:IsEqualConverter}"
Value="MAUI" />
</x:Array>
</ResourceDictionary>
</ContentPage.Resources>
<Label IsVisible="{Binding EnteredName, Converter={StaticResource MyMultiConverter}, ConverterParameter={StaticResource MultiParams}, Mode=OneWay}"
Text="Well done you guessed the magic word!"/>
</ContentPage>
C#
Można MultiConverter
go użyć w następujący sposób w języku C#:
class MultiConverterPage : ContentPage
{
public MultiConverterPage()
{
var label = new Label { Text = "Well done you guessed the magic word!" };
var converter = new MultiConverter
{
new TextCaseConverter(),
new IsEqualConverter()
};
var parameters = new List<MultiConverterParameter>
{
new MultiConverterParameter { ConverterType = typeof(TextCaseConverter), Value = TextCaseType.Upper },
new MultiConverterParameter { ConverterType = typeof(IsEqualConverter), Value = "MAUI" },
};
label.SetBinding(
Label.IsVisibleProperty,
new Binding(
static (ViewModels vm) => vm.EnteredName,
converter: converter,
converterParameter: parameters));
Content = label;
}
}
Znaczniki języka C#
Nasz CommunityToolkit.Maui.Markup
pakiet zapewnia znacznie bardziej zwięzły sposób używania tego konwertera w języku C#.
class MultiConverterPage : ContentPage
{
public MultiConverterPage()
{
var converter = new MultiConverter
{
new TextCaseConverter(),
new IsEqualConverter()
};
var parameters = new List<MultiConverterParameter>
{
new MultiConverterParameter { ConverterType = typeof(TextCaseConverter), Value = TextCaseType.Upper },
new MultiConverterParameter { ConverterType = typeof(IsEqualConverter), Value = "MAUI" },
};
Content = new Label()
.Text("Well done you guessed the magic word!")
.Bind(
Label.IsVisibleProperty,
static (ViewModel vm) => vm.EnteredName,
converter: converter,
converterParameter: parameters);
}
}
Przykłady
Przykład tego konwertera można znaleźć w aplikacji przykładowej zestawu narzędzi .NET MAUI Community Toolkit.
interfejs API
Kod źródłowy można MultiConverter
znaleźć w repozytorium GitHub zestawu narzędzi .NET MAUI Community Toolkit.
.NET MAUI Community Toolkit