Settings:
CheckedColor="#fae1c2"
CheckedSymbolColor="Black"
Works fine on IOS and Android, but shows as white on UWP.
I have a StackLayout, a ListView and within the listview a RadCheckBox and a Label. The StackLayout has a binding to IsVisible with the viewmodel. The ListView binds IsVisible to another property bound in the viewmodel. When OnAppearing of the Page, the ItemsSource of the ListView is set to an ObservableCollection. Now we get a crash on iOS and a Samsung Galayxy S with Android 9:
at Telerik.XamarinForms.PrimitivesRenderer.iOS.TKCheckBox.CleanUI () [0x00007] in <04ee5ef79f6f4ed58266679a9a47ffaf>:0
at Telerik.XamarinForms.PrimitivesRenderer.iOS.CheckBoxRenderer.OnElementDetached (Telerik.XamarinForms.Primitives.RadCheckBox oldElement) [0x00025] in <04ee5ef79f6f4ed58266679a9a47ffaf>:0
at Telerik.XamarinForms.Common.iOS.IosRendererBase`2[S,T].Dispose (System.Boolean disposing) [0x0001f] in <b3d6af25b9654b5881f5a9721531628b>:0
at Foundation.NSObject.Dispose () [0x00000] in /Library/Frameworks/Xamarin.iOS.framework/Versions/13.4.0.2/src/Xamarin.iOS/Foundation/NSObject2.cs:147
at Xamarin.Forms.Platform.iOS.ListViewRenderer+UnevenListViewDataSource.CalculateHeightForCell (UIKit.UITableView tableView, Xamarin.Forms.Cell cell) [0x000aa] in D:\a\1\s\Xamarin.Forms.Platform.iOS\Renderers\ListViewRenderer.cs:897
at Xamarin.Forms.Platform.iOS.ListViewRenderer+UnevenListViewDataSource.GetEstimatedRowHeight (UIKit.UITableView table) [0x0008c] in D:\a\1\s\Xamarin.Forms.Platform.iOS\Renderers\ListViewRenderer.cs:812
at Xamarin.Forms.Platform.iOS.ListViewRenderer+UnevenListViewDataSource.UpdateEstimatedRowHeight (UIKit.UITableView tableView) [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.iOS\Renderers\ListViewRenderer.cs:823
at Xamarin.Forms.Platform.iOS.ListViewRenderer+ListViewDataSource.DetermineEstimatedRowHeight () [0x00009] in D:\a\1\s\Xamarin.Forms.Platform.iOS\Renderers\ListViewRenderer.cs:1271
at Xamarin.Forms.Platform.iOS.FormsUITableViewController.ViewWillLayoutSubviews () [0x00000] in D:\a\1\s\Xamarin.Forms.Platform.iOS\Renderers\ListViewRenderer.cs:1599
at (wrapper managed-to-native) UIKit.UIApplication.UIApplicationMain(int,string[],intptr,intptr)
at UIKit.UIApplication.Main (System.String[] args, System.IntPtr principal, System.IntPtr delegate) [0x00005] in /Library/Frameworks/Xamarin.iOS.framework/Versions/13.4.0.2/src/Xamarin.iOS/UIKit/UIApplication.cs:86
at UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0000e] in /Library/Frameworks/Xamarin.iOS.framework/Versions/13.4.0.2/src/Xamarin.iOS/UIKit/UIApplication.cs:65
at our app......
The remedy after a lot of trial and error was to replace the ListView with the Telerik ListView. Now the App no longer crashes. I hope this helps investigating the issue, since I noticed there are similar requests in the bug reports.
I'm using: Xamarin Forms 4.2.0.848062, Telerik2019.3.1004.1.
Request for RadioButton-like mutual exclusive selection using a Group type of property. Ex: <CheckBox Group="Gender" /> <CheckBox Group="Gender" /> <CheckBox Group="Gender" /> When one of the CheckBoxes in the Gender group are checked, any other selections are cleared.
Hi
I have a radcheckbox whose checked value is set on my view model, it is bound oneway. My View model implements INotify.
When my viewmodel updates the property, the ui does not update. If i set the mode to TwoWay the ui reflects accordingly. I have a converter linked to this same property on another object hence I can't set TwoWay Binding to achieve this(Not included in the sample). The checkbox will just be displaying a state and never be updated by the user
I have tested on iOS and UWP. Have not verified on Android currently, but will require this in future.
Attached is a sample project.
Hello!
When include a CheckBox inside a simple ListView (also with RadListView), and try implement the CheckBoxUserCommand Id="IsCheckedChanged" the control appears disabled.
I use MVVM and I need binding the checkedChanged Command to execute a custom operation related to specific row of the ListView; but, how can i know which element of the ListView affecting when checked / unchecked the CheckBox. Here the code:
PD: Then prefix name of <checkBoxComamnds:CheckBoxUserCommand> is wrong, should be <checkBoxCommands: > (Error in word: Comamnds...)
XAML
<AbsoluteLayout BindingContext ="{Binding ViewModel}">
<ListView IsRefreshing="{Binding IsRefreshing, Mode=TwoWay}"
ItemsSource="{Binding CalendarList}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<Grid>
<Grid.RowDefinitions >
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width = "Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions >
< !--Calendar checkBox Selector -->
<telerikPrimitives:RadCheckBox
x:Name="checkViewCalendar">
<telerikPrimitives:RadCheckBox.Commands>
<checkBoxComamnds:CheckBoxUserCommand
Command = "{Binding IsCheckedChangedCommand}"
Id="IsCheckedChanged"
SuppressDefaultCommand="True">
</checkBoxComamnds:CheckBoxUserCommand>
</telerikPrimitives:RadCheckBox.Commands>
</telerikPrimitives:RadCheckBox>
<!-- Name of Agenda -->
<Label
Grid.Row="0"
Grid.Column="1"
HorizontalOptions="FillAndExpand"
Text="{Binding Name}">
</Label>
</Grid >
</ViewCell >
</DataTemplate >
</ListView.ItemTemplate >
</ListView >
</AbsoluteLayout>
MVVM Code
namespace ViewModels
{
//using ...
using System.Windows.Input;
using Xamarin.Forms;
using Telerik.XamarinForms.Primitives.CheckBox.Commands;
public class CalendarsViewModel : BaseViewModel
public CalendarsViewModel()
{
this.IsCheckedChangedCommand = new Command<CheckBoxIsCheckChangedCommandContext>(this.CheckBoxChange);
this.LoadCalendars();
}
private async void CheckBoxChange(CheckBoxIsCheckChangedCommandContext context)
{
await Application.Current.MainPage.DisplayAlert(
"MVVM Alert Start",
$"CheckBox User Command executed at {DateTime.Now.ToLocalTime()} in {context.ToString()}",
"Ok");
//How identify the container row in the context?
}
public ICommand IsCheckedChangedCommand { get; set; }
public ObservableCollection<Calendar> CalendarList
{
get { return this.calendars; }
set { SetValue(ref this.calendars, value); }
}
private async void LoadCalendars()
{
// API Call to get List and create ObservableCollection Binding to ListView
}