Xamarin.Forms Zaškrtávací políčko
Jedná se Xamarin.FormsCheckBox
o typ tlačítka, které lze zkontrolovat nebo vyprázdnit. Když je zaškrtnuté políčko, považuje se za zapnuté. Když je zaškrtávací políčko prázdné, považuje se za vypnuté.
CheckBox
bool
definuje vlastnost s názvem IsChecked
, která označuje, zda je zaškrtnutoCheckBox
. Tato vlastnost je také podporována BindableProperty
objektem, což znamená, že lze stylovat a být cílem datových vazeb.
Poznámka:
Vlastnost IsChecked
bindable má výchozí režim vazby BindingMode.TwoWay
.
CheckBox
CheckedChanged
definuje událost, která se aktivuje při IsChecked
změně vlastnosti, a to buď prostřednictvím manipulace s uživatelem, nebo když aplikace nastaví IsChecked
vlastnost. Objekt CheckedChangedEventArgs
, který doprovází CheckedChanged
událost má jednu vlastnost s názvem Value
, typu bool
. Při spuštění události je hodnota Value
vlastnosti nastavena na novou hodnotu IsChecked
vlastnosti.
Vytvoření zaškrtávacího políčka
Následující příklad ukazuje, jak vytvořit instanci CheckBox
v JAZYCE XAML:
<CheckBox />
Výsledkem tohoto kódu XAML je vzhled zobrazený na následujících snímcích obrazovky:
Ve výchozím nastavení je tato CheckBox
hodnota prázdná. Tuto CheckBox
vlastnost lze zkontrolovat pomocí manipulace s uživatelem nebo nastavením IsChecked
vlastnosti na true
:
<CheckBox IsChecked="true" />
Výsledkem tohoto kódu XAML je vzhled zobrazený na následujících snímcích obrazovky:
Alternativně CheckBox
můžete vytvořit kód:
CheckBox checkBox = new CheckBox { IsChecked = true };
Reakce na změnu stavu zaškrtávacího políčka
Když se IsChecked
vlastnost změní, ať už prostřednictvím manipulace s uživatelem nebo když aplikace nastaví IsChecked
vlastnost, CheckedChanged
událost se aktivuje. Obslužnou rutinu události pro tuto událost lze zaregistrovat, aby reagovala na změnu:
<CheckBox CheckedChanged="OnCheckBoxCheckedChanged" />
Soubor kódu obsahuje obslužnou rutinu CheckedChanged
události:
void OnCheckBoxCheckedChanged(object sender, CheckedChangedEventArgs e)
{
// Perform required operation after examining e.Value
}
Argument sender
je CheckBox
zodpovědný za tuto událost. Můžete ho použít pro přístup k objektu CheckBox
nebo k rozlišení mezi více CheckBox
objekty, které sdílejí stejnou obslužnou CheckedChanged
rutinu události.
Případně můžete obslužnou rutinu události události CheckedChanged
zaregistrovat v kódu:
CheckBox checkBox = new CheckBox { ... };
checkBox.CheckedChanged += (sender, e) =>
{
// Perform required operation after examining e.Value
};
Datová vazba zaškrtávacího políčka
Obslužnou rutinu CheckedChanged
události je možné odstranit pomocí datové vazby a triggerů, které reagují na CheckBox
kontrolu nebo prázdné:
<CheckBox x:Name="checkBox" />
<Label Text="Lorem ipsum dolor sit amet, elit rutrum, enim hendrerit augue vitae praesent sed non, lorem aenean quis praesent pede.">
<Label.Triggers>
<DataTrigger TargetType="Label"
Binding="{Binding Source={x:Reference checkBox}, Path=IsChecked}"
Value="true">
<Setter Property="FontAttributes"
Value="Italic, Bold" />
<Setter Property="FontSize"
Value="Large" />
</DataTrigger>
</Label.Triggers>
</Label>
V tomto příkladu Label
používá výraz vazby v triggeru dat k monitorování IsChecked
vlastnosti objektu CheckBox
. Když se tato vlastnost stane true
, FontAttributes
a FontSize
vlastnosti Label
změny. Když se IsChecked
tato vlastnost vrátí do false
, FontAttributes
vlastnosti a FontSize
vlastnosti se resetují do jejich počátečního Label
stavu.
Na následujících snímcích obrazovky se na snímku obrazovky s iOSem Label
zobrazuje formátování, když CheckBox
je prázdný, zatímco snímek obrazovky s Androidem zobrazuje Label
formátování, když je zaškrtnuté CheckBox
:
Další informace o aktivačních událostech najdete v tématu Xamarin.Forms Aktivační události.
Zakázání zaškrtávacího políčka
Někdy aplikace zadá stav, ve kterém CheckBox
kontrola není platná operace. V takových případech CheckBox
lze zakázat nastavením jeho IsEnabled
vlastnosti na false
hodnotu .
Vzhled zaškrtávacího políčka
Kromě vlastností, které CheckBox
dědí z View
třídy, CheckBox
definuje Color
také vlastnost, která nastaví jeho barvu na Color
:
<CheckBox Color="Red" />
Následující snímky obrazovky znázorňují řadu kontrolovaných CheckBox
objektů, kde každý objekt má svou Color
vlastnost nastavenou na jinou Color
:
Stavy vizuálu CheckBox
CheckBox
IsChecked
VisualState
obsahuje možnost, která se dá použít k zahájení změny vizuálu CheckBox
při zaškrtnutí.
Následující příklad XAML ukazuje, jak definovat stav vizuálu IsChecked
pro stav:
<CheckBox ...>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
<VisualState.Setters>
<Setter Property="Color"
Value="Red" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="IsChecked">
<VisualState.Setters>
<Setter Property="Color"
Value="Green" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</CheckBox>
V tomto příkladu IsChecked
VisualState
určuje, že při CheckBox
zaškrtnutí bude jeho Color
vlastnost nastavena na zelenou. Určuje Normal
VisualState
, že když je v CheckBox
normálním stavu, jeho Color
vlastnost bude nastavena na červenou. Celkový efekt je proto, že CheckBox
je červený, když je prázdný, a zelený, když je zaškrtnutý.
Další informace o vizuálních stavech najdete v tématu Xamarin.Forms Visual State Manager.