EnumToBoolConverter
Jest EnumToBoolConverter
to jeden ze sposobów konwerter, który pozwala przekonwertować element Enum
na odpowiadający bool
na podstawie tego, czy jest on równy zestawowi podanych wartości wyliczenia. Jest to przydatne, gdy powiązanie kolekcji wartości reprezentujących typ wyliczenia z właściwością kontrolki logicznej, takiej jak IsVisible
właściwość.
Metoda Convert
zwraca podaną value
wartość przekonwertowaną na wartość opartą bool
na tym, czy value
wartość jest równa dowolnej zdefiniowanej TrueValues
, czy podanej wartości CommandParameter
.
Metoda nie jest obsługiwana ConvertBack
.
Uwaga
Należy pamiętać, że wartość "true" do porównania można podać w następujący sposób:
TrueValue
jako właściwość konwertera.ConverterParameter
jako w powiązaniu konwertera,
Należy pamiętać, że TrueValues
właściwość będzie mieć pierwszeństwo przed opcją ConverterParameter
.
Właściwości obiektu BaseConverter
Następujące właściwości są implementowane w klasie bazowej: public abstract class BaseConverter
Właściwości | opis |
---|---|
DefaultConvertReturnValue |
Wartość domyślna, która ma być zwracana, gdy IValueConverter.Convert(object?, Type, object?, CultureInfo?) zgłasza wartość Exception . Ta wartość jest używana, gdy właściwość CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters jest ustawiona na true wartość . |
DefaultConvertBackReturnValue |
Wartość domyślna, która ma być zwracana, gdy IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) zgłasza wartość Exception . Ta wartość jest używana, gdy właściwość CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters jest ustawiona na true wartość . |
Właściwości ICommunityToolkitValueConverter
Następujące właściwości są implementowane w pliku public interface ICommunityToolkitValueConverter
:
Właściwość | Type | Opis |
---|---|---|
DefaultConvertReturnValue |
object? |
Wartość domyślna, która ma być zwracana, gdy IValueConverter.Convert(object?, Type, object?, CultureInfo?) zgłasza wartość Exception . Ta wartość jest używana, gdy właściwość CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters jest ustawiona na true wartość . |
DefaultConvertBackReturnValue |
object? |
Wartość domyślna, która ma być zwracana, gdy IValueConverter.ConvertBack(object?, Type, object?, CultureInfo?) zgłasza wartość Exception . Ta wartość jest używana, gdy właściwość CommunityToolkit.Maui.Options.ShouldSuppressExceptionsInConverters jest ustawiona na true wartość . |
Składnia
Każdy z poniższych przykładów korzysta z następującej definicji wyliczenia:
namespace MyLittleApp;
public enum MyDevicePlatform
{
Android,
iOS,
macOS,
Tizen,
Windows
}
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 enumToBoolConverter
Można EnumToBoolConverter
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"
xmlns:mylittleapp="clr-namespace:MyLittleApp"
x:Class="MyLittleApp.MainPage">
<ContentPage.Resources>
<ResourceDictionary>
<toolkit:EnumToBoolConverter x:Key="MobileConverter">
<toolkit:EnumToBoolConverter.TrueValues>
<mylittleapp:MyDevicePlatform>Android</mylittleapp:MyDevicePlatform>
<mylittleapp:MyDevicePlatform>iOS</mylittleapp:MyDevicePlatform>
</toolkit:EnumToBoolConverter.TrueValues>
</toolkit:EnumToBoolConverter>
</ResourceDictionary>
</ContentPage.Resources>
<VerticalStackLayout>
<Picker ItemsSource="{Binding Platforms}"
SelectedItem="{Binding SelectedPlatform}" />
<Label IsVisible="{Binding SelectedPlatform, Converter={StaticResource MobileConverter}}"
Text="I am visible when the Picker value is Android or iOS."/>
</VerticalStackLayout>
</ContentPage>
Można również przekazać parametr konwertera:
<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="MyLittleApp.MainPage">
<ContentPage.Resources>
<ResourceDictionary>
<toolkit:EnumToBoolConverter x:Key="PlatformConverter" />
</ResourceDictionary>
</ContentPage.Resources>
<VerticalStackLayout>
<Picker ItemsSource="{Binding Platforms}"
SelectedItem="{Binding SelectedPlatform}" />
<Label IsVisible="{Binding SelectedPlatform, Converter={StaticResource PlatformConverter}, ConverterParameter={x:Static vm:MyDevicePlatform.Tizen}}"
Text="I am visible when the Picker value is Tizen."/>
</VerticalStackLayout>
</ContentPage>
C#
Można EnumToBoolConverter
go użyć w następujący sposób w języku C#:
class EnumToBoolConverterPage : ContentPage
{
public EnumToBoolConverterPage()
{
var picker = new Picker();
picker.SetBinding(Picker.ItemsSourceProperty, static (ViewModel vm) => vm.Platforms);
picker.SetBinding(Picker.SelectedItemProperty, static (ViewModel vm) => vm.SelectedPlatform);
var label = new Label
{
Text = "I am visible when the Picker value is Tizen."
};
label.SetBinding(
Label.IsVisibleProperty,
new Binding(
static (ViewModel vm) => vm.SelectedPlatform,
converter: new EnumToBoolConverter(),
converterParameter: MyDevicePlatform.Tizen));
Content = new VerticalStackLayout
{
Children = { picker, 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#.
using CommunityToolkit.Maui.Markup;
class EnumToBoolConverterPage : ContentPage
{
public EnumToBoolConverterPage()
{
Content = new VerticalStackLayout
{
Children =
{
new Picker()
.Bind(
Picker.ItemsSourceProperty,
static (ViewModel vm) => vm.Platforms)
.Bind(
Picker.SelectedItemProperty,
static (ViewModel vm) => vm.SelectedPlatform),
new Label()
.Text("I am visible when the Picker value is Tizen.")
.Bind(
Label.IsVisibleProperty,
static (ViewModel vm) => vm.SelectedPlatform,
converter: new EnumToBoolConverter(),
converterParameter: MyDevicePlatform.Tizen)
}
};
}
}
Właściwości
Właściwości | Type | Opis |
---|---|---|
TrueValues | IList<Enum> |
Wartości wyliczeniowe, które są konwertowane na true (opcjonalnie). |
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 EnumToBoolConverter
znaleźć w repozytorium GitHub zestawu narzędzi .NET MAUI Community Toolkit.
.NET MAUI Community Toolkit