[英]Checkbox is not clickable | Xamarin.forms
基本上,我在內容頁面上有一個復選框,但無法單擊它。 它可以正確顯示它,但是當我單擊它時,什么也沒有發生。 它甚至不選中該復選框,什么也沒有發生,就好像它是一個圖像一樣。
我試過了:
IsEnabled="True"
IsChecked="True"
這是我的3個復選框之一:
<CheckBox x:Name="cbop"
Grid.Row="1"
CheckedChanged="Cbop_CheckedChanged"
IsEnabled="True"
Grid.Column="3" />
這是cbop_CheckedChange:
private void Cbop_CheckedChanged(object sender, CheckedChangedEventArgs e)
{
cbhardcore.IsChecked = false;
cbnormal.IsChecked = false;
}
xaml的完整代碼:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="App3.Views.GameSettings">
<ContentPage.Content>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="120" />
<RowDefinition Height="120" />
<RowDefinition Height="120" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25*" />
<ColumnDefinition Width="20*" />
<ColumnDefinition Width="20*" />
<ColumnDefinition Width="23*" />
<ColumnDefinition Width="10*" />
</Grid.ColumnDefinitions>
<CheckBox x:Name="cbhardcore"
Grid.Row="1"
CheckedChanged="Cbhardcore_CheckedChanged"
IsEnabled="True"
Grid.Column="1" />
<CheckBox x:Name="cbnormal"
Grid.Row="1"
CheckedChanged="Cbnormal_CheckedChanged"
IsEnabled="True"
Grid.Column="2" />
<CheckBox x:Name="cbop"
Grid.Row="1"
CheckedChanged="Cbop_CheckedChanged"
IsEnabled="True"
Grid.Column="3" />
<Label x:Name="lblharcore"
Grid.Row="1"
Grid.Column="1"
Text="Hardcore" />
<Label x:Name="lblnormal"
Grid.Row="1"
Grid.Column="2"
Text="Normal" />
<Label x:Name="lblop"
Grid.Row="1"
Grid.Column="3"
Text="Overpowered" />
</Grid>
</ContentPage.Content>
</ContentPage>
后面的完整代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace App3.Views
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class GameSettings : ContentPage
{
public GameSettings()
{
InitializeComponent();
}
private void Cbop_CheckedChanged(object sender, CheckedChangedEventArgs e)
{
cbhardcore.IsChecked = false;
cbnormal.IsChecked = false;
}
private void Cbnormal_CheckedChanged(object sender, CheckedChangedEventArgs e)
{
cbhardcore.IsChecked = false;
cbop.IsChecked = false;
}
private void Cbhardcore_CheckedChanged(object sender, CheckedChangedEventArgs e)
{
cbop.IsChecked = false;
cbnormal.IsChecked = false;
}
}
}
原因:您將Label
和CheckBox
放置在網格的同一單元格中(相同的行和列)。 因此該復選框將被標簽覆蓋。您可以設置Label的BackgroundColor進行檢查。
<Label x:Name="lblharcore"
BackgroundColor="red"
Grid.Row="0"
Grid.Column="1"
Text="Hardcore" />
解決方案:改善布局。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="120" />
<RowDefinition Height="120" />
<RowDefinition Height="120" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25*" />
<ColumnDefinition Width="20*" />
<ColumnDefinition Width="20*" />
<ColumnDefinition Width="23*" />
<ColumnDefinition Width="10*" />
</Grid.ColumnDefinitions>
<StackLayout Grid.Column="1" Grid.Row="1" VerticalOptions="Center" HorizontalOptions="Center">
<Label x:Name="lblharcore"
BackgroundColor="red"
Text="Hardcore" />
<CheckBox x:Name="cbhardcore"
CheckedChanged="Cbhardcore_CheckedChanged"
IsEnabled="True"
/>
</StackLayout>
<StackLayout Grid.Column="2" Grid.Row="1" VerticalOptions="Center" HorizontalOptions="Center">
<Label x:Name="lblnormal"
Text="Normal" />
<CheckBox x:Name="cbnormal"
CheckedChanged="Cbnormal_CheckedChanged"
IsEnabled="True"
/>
</StackLayout>
<StackLayout Grid.Column="3" Grid.Row="1" VerticalOptions="Center" HorizontalOptions="Center">
<Label x:Name="lblop"
Text="Overpowered" />
<CheckBox x:Name="cbop"
CheckedChanged="Cbop_CheckedChanged"
IsEnabled="True"
/>
</StackLayout>
</Grid>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.