It would be great to have controls to enter an IP Address and a MAC address.
IP Address in the form of: ###.###.###.### where the # ranges from 0 to 255 for each octet.
MAC address in the form of: ##-##-##-##-##-## where the # ranges in hex from 00 to FF.
The "Scrolled" event is such a essential feature.
For example, i made a floating searchbar with transparent frame, and a RadListView with HeaderTemplate that is longer than a screen of the device, i would like to detect whether the listview has scrolled for more than 10px vertically. If yes, set the background of the frame of the searchbar to my desired color.Xamarin.Forms, collectionview, listview, and scrollview has Scrolled event, but why RadListView does not? Using ItemAppearing event is just avoiding the problem instead of solving it. It will not be able to fulfill the criteria as the any item does not even enter the screen yet before the required task need to be done.
We have yet to upgrade our mobile app to Xamarin Forms 4.x and the latest Telerik releases due to a hard crash in Android when we leave a page containing a Telerik ListView control.
The exception seems to mirror what is discussed here: https://www.telerik.com/forums/null-ref-error-iorderedtraversalcontroller-updatetraversalorder
Here is what we are seeing... what is the latest on addressing this error? We need to upgrade from Xamarin Forms 3.6.x soon.
10-16 15:00:06.082 I/MonoDroid( 4686): UNHANDLED EXCEPTION:
10-16 15:00:06.084 I/MonoDroid( 4686): System.NullReferenceException: Object reference not set to an instance of an object.
10-16 15:00:06.084 I/MonoDroid( 4686): at Xamarin.Forms.Platform.Android.PageRenderer.Xamarin.Forms.Platform.Android.IOrderedTraversalController.UpdateTraversalOrder () [0x000a4] in D:\a\1\s\Xamarin.Forms.Platform.Android\Renderers\PageRenderer.cs:186
10-16 15:00:06.084 I/MonoDroid( 4686): at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].UpdateParentPageTraversalOrder () [0x00025] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:402
10-16 15:00:06.084 I/MonoDroid( 4686): at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].OnElementPropertyChanged (System.Object sender, System.ComponentModel.PropertyChangedEventArgs e) [0x00116] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:366
10-16 15:00:06.084 I/MonoDroid( 4686): at (wrapper delegate-invoke) <Module>.invoke_void_object_PropertyChangedEventArgs(object,System.ComponentModel.PropertyChangedEventArgs)
10-16 15:00:06.084 I/MonoDroid( 4686): at Xamarin.Forms.BindableObject.OnPropertyChanged (System.String propertyName) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\BindableObject.cs:211
10-16 15:00:06.084 I/MonoDroid( 4686): at Xamarin.Forms.Element.OnPropertyChanged (System.String propertyName) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Element.cs:359
10-16 15:00:06.084 I/MonoDroid( 4686): at Xamarin.Forms.Element.set_Parent (Xamarin.Forms.Element value) [0x000e9] in D:\a\1\s\Xamarin.Forms.Core\Element.cs:216
10-16 15:00:06.084 I/MonoDroid( 4686): at Xamarin.Forms.Element.OnChildRemoved (Xamarin.Forms.Element child) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Element.cs:341
10-16 15:00:06.084 I/MonoDroid( 4686): at Xamarin.Forms.ViewCell.set_View (Xamarin.Forms.View value) [0x00019] in D:\a\1\s\Xamarin.Forms.Core\Cells\ViewCell.cs:25
10-16 15:00:06.084 I/MonoDroid( 4686): at Telerik.XamarinForms.DataControlsRenderer.Android.ListView.CellContainerBase.Dispose (System.Boolean disposing) [0x00034] in <12ab8aad1d0a41af83f0de07840de122>:0
10-16 15:00:06.084 I/MonoDroid( 4686): at Java.Lang.Object.Dispose () [0x00000] in <11a340ccc8de43f09c97400139266ef5>:0
10-16 15:00:06.084 I/MonoDroid( 4686): at Telerik.XamarinForms.DataControlsRenderer.Android.FormsListViewDataSourceAdapterBase.ClearCachedViews () [0x00023] in <12ab8aad1d0a41af83f0de07840de122>:0
10-16 15:00:06.085 I/MonoDroid( 4686): at Telerik.XamarinForms.DataControlsRenderer.Android.RadListViewDataSourceAdapter.ClearCachedViews () [0x00000] in <12ab8aad1d0a41af83f0de07840de122>:0
10-16 15:00:06.085 I/MonoDroid( 4686): at Telerik.XamarinForms.DataControlsRenderer.Android.RadListViewDataSourceAdapter.Dispose (System.Boolean disposing) [0x00003] in <12ab8aad1d0a41af83f0de07840de122>:0
10-16 15:00:06.085 I/MonoDroid( 4686): at Java.Lang.Object.Dispose () [0x00000] in <11a340ccc8de43f09c97400139266ef5>:0
10-16 15:00:06.085 I/MonoDroid( 4686): at Telerik.XamarinForms.DataControlsRenderer.Android.ListViewRenderer.OnElementDetached (Telerik.XamarinForms.DataControls.RadListView oldElement) [0x00042] in <12ab8aad1d0a41af83f0de07840de122>:0
10-16 15:00:06.085 I/MonoDroid( 4686): at Telerik.XamarinForms.Common.Android.AndroidRendererBase`2[S,T].Dispose (System.Boolean disposing) [0x0001f] in <14fbe24a55144e3caaf308ca594f4d5e>:0
10-16 15:00:06.085 I/MonoDroid( 4686): at Java.Lang.Object.Dispose () [0x00000] in <11a340ccc8de43f09c97400139266ef5>:0
10-16 15:00:06.085 I/MonoDroid( 4686): at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing) [0x000c7] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:311
10-16 15:00:06.085 I/MonoDroid( 4686): at Xamarin.Forms.Platform.Android.Platform+DefaultRenderer.Dispose (System.Boolean disposing) [0x0000a] in D:\a\1\s\Xamarin.Forms.Platform.Android\Platform.cs:1290
10-16 15:00:06.085 I/MonoDroid( 4686): at Java.Lang.Object.Dispose () [0x00000] in <11a340ccc8de43f09c97400139266ef5>:0
10-16 15:00:06.085 I/MonoDroid( 4686): at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing) [0x000c7] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:311
10-16 15:00:06.085 I/MonoDroid( 4686): at Xamarin.Forms.Platform.Android.Platform+DefaultRenderer.Dispose (System.Boolean disposing) [0x0000a] in D:\a\1\s\Xamarin.Forms.Platform.Android\Platform.cs:1290
10-16 15:00:06.085 I/MonoDroid( 4686): at Java.Lang.Object.Dispose () [0x00000] in <11a340ccc8de43f09c97400139266ef5>:0
10-16 15:00:06.085 I/MonoDroid( 4686): at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing) [0x000c7] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:311
10-16 15:00:06.085 I/MonoDroid( 4686): at Xamarin.Forms.Platform.Android.PageRenderer.Dispose (System.Boolean disposing) [0x00024] in D:\a\1\s\Xamarin.Forms.Platform.Android\Renderers\PageRenderer.cs:53
10-16 15:00:06.085 I/MonoDroid( 4686): at Java.Lang.Object.Dispose () [0x00000] in <11a340ccc8de43f09c97400139266ef5>:0
10-16 15:00:06.085 I/MonoDroid( 4686): at Xamarin.Forms.Platform.Android.AppCompat.FragmentContainer.OnDestroyView () [0x0003c] in D:\a\1\s\Xamarin.Forms.Platform.Android\AppCompat\FragmentContainer.cs:80
10-16 15:00:06.085 I/MonoDroid( 4686): at Android.Support.V4.App.Fragment.n_OnDestroyView (System.IntPtr jnienv, System.IntPtr native__this) [0x00008] in <fefee6c2c695459088a9df092723e052>:0
10-16 15:00:06.085 I/MonoDroid( 4686): at (wrapper dynamic-method) Android.Runtime.DynamicMethodNameCounter.97(intptr,intptr)
10-16 15:00:06.088 E/AppCenterCrashes( 4686): Unhandled Exception from source=AndroidEnvironment
10-16 15:00:06.088 E/AppCenterCrashes( 4686): System.NullReferenceException: Object reference not set to an instance of an object.
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.Platform.Android.PageRenderer.Xamarin.Forms.Platform.Android.IOrderedTraversalController.UpdateTraversalOrder () [0x000a4] in D:\a\1\s\Xamarin.Forms.Platform.Android\Renderers\PageRenderer.cs:186
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].UpdateParentPageTraversalOrder () [0x00025] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:402
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].OnElementPropertyChanged (System.Object sender, System.ComponentModel.PropertyChangedEventArgs e) [0x00116] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:366
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at (wrapper delegate-invoke) <Module>.invoke_void_object_PropertyChangedEventArgs(object,System.ComponentModel.PropertyChangedEventArgs)
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.BindableObject.OnPropertyChanged (System.String propertyName) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\BindableObject.cs:211
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.Element.OnPropertyChanged (System.String propertyName) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Element.cs:359
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.Element.set_Parent (Xamarin.Forms.Element value) [0x000e9] in D:\a\1\s\Xamarin.Forms.Core\Element.cs:216
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.Element.OnChildRemoved (Xamarin.Forms.Element child) [0x00000] in D:\a\1\s\Xamarin.Forms.Core\Element.cs:341
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.ViewCell.set_View (Xamarin.Forms.View value) [0x00019] in D:\a\1\s\Xamarin.Forms.Core\Cells\ViewCell.cs:25
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Telerik.XamarinForms.DataControlsRenderer.Android.ListView.CellContainerBase.Dispose (System.Boolean disposing) [0x00034] in <12ab8aad1d0a41af83f0de07840de122>:0
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Java.Lang.Object.Dispose () [0x00000] in <11a340ccc8de43f09c97400139266ef5>:0
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Telerik.XamarinForms.DataControlsRenderer.Android.FormsListViewDataSourceAdapterBase.ClearCachedViews () [0x00023] in <12ab8aad1d0a41af83f0de07840de122>:0
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Telerik.XamarinForms.DataControlsRenderer.Android.RadListViewDataSourceAdapter.ClearCachedViews () [0x00000] in <12ab8aad1d0a41af83f0de07840de122>:0
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Telerik.XamarinForms.DataControlsRenderer.Android.RadListViewDataSourceAdapter.Dispose (System.Boolean disposing) [0x00003] in <12ab8aad1d0a41af83f0de07840de122>:0
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Java.Lang.Object.Dispose () [0x00000] in <11a340ccc8de43f09c97400139266ef5>:0
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Telerik.XamarinForms.DataControlsRenderer.Android.ListViewRenderer.OnElementDetached (Telerik.XamarinForms.DataControls.RadListView oldElement) [0x00042] in <12ab8aad1d0a41af83f0de07840de122>:0
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Telerik.XamarinForms.Common.Android.AndroidRendererBase`2[S,T].Dispose (System.Boolean disposing) [0x0001f] in <14fbe24a55144e3caaf308ca594f4d5e>:0
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Java.Lang.Object.Dispose () [0x00000] in <11a340ccc8de43f09c97400139266ef5>:0
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing) [0x000c7] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:311
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.Platform.Android.Platform+DefaultRenderer.Dispose (System.Boolean disposing) [0x0000a] in D:\a\1\s\Xamarin.Forms.Platform.Android\Platform.cs:1290
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Java.Lang.Object.Dispose () [0x00000] in <11a340ccc8de43f09c97400139266ef5>:0
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing) [0x000c7] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:311
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.Platform.Android.Platform+DefaultRenderer.Dispose (System.Boolean disposing) [0x0000a] in D:\a\1\s\Xamarin.Forms.Platform.Android\Platform.cs:1290
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Java.Lang.Object.Dispose () [0x00000] in <11a340ccc8de43f09c97400139266ef5>:0
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.Platform.Android.VisualElementRenderer`1[TElement].Dispose (System.Boolean disposing) [0x000c7] in D:\a\1\s\Xamarin.Forms.Platform.Android\VisualElementRenderer.cs:311
10-16 15:00:06.088 E/AppCenterCrashes( 4686): at Xamarin.Forms.Platform.Android.PageRenderer.Dispose (System.Boolean disposing) [0x00024] in D:\a\1\s\Xamarin.Forms.Platform.Android\
Hello,
Another important control is missing from your Control Suit. That is Rich Text Box control, same like one available from SyncFusion: https://www.syncfusion.com/xamarin-ui-controls/xamarin-richtexteditor
Please give us a rich text editor control like that. Thank you.
Currently, the HealthcareAssistant demo is lacking in features. For example there are no pickers or any commonly used cards.
Although the TravelAssistant demo does have these features implemented, we would specifically like to see the HealthcareAssistant implementation of them. As it is now, we find it lacking and not a helpful demonstration.
To illustrate what I mean, please refer to the attached screenshot as just one of the possible responses that not currently covered by the example.
Thank you.
Currently only Views can be hosted in the MainContent. If users can host Pages the RadSideDrawer could be used as root navigation component. This will allow customers to define the RadSideDrawer once throughout the application.
The UI for UWP ListView has a great feature that lets you define a string (or a DataTemplate) that the ListView will show where there are no items in the ItemsSource via the EmptyContent property.
Please add this for the UI for Xamarin RadListView.
Hi,
I rolled my app with the ListView out to production and are getting 8+ crashes a day from 140 users with the above issue. I have included a stack trace. I cannot find the steps to reproduce the issue in development. I have rolled back to using the native ListView as this does not crash the app.
Attached is an example project to see what I am doing in general terms, but I have not been able to reproduce this crash in it.
My guess is that a DataTemplate is not being cleaned up properly and when the data behind is changed it attempts to access the control that represented the data in the DataTemplate.
Regards
Anthony
When using a RadListview with a Grid or a Stack Layout in iOS I get the following exception. I haven't tested using the stacklayout outside of the RadListView nor have I tested it outside of the ItemTemplateSelector
Telerik.XamarinForms.Common.NotRegisteredRendererException: There is no renderer registered for the specified type: Xamarin.Forms.Grid
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:telerikDataControls="clr-namespace:Telerik.XamarinForms.DataControls;assembly=Telerik.XamarinForms.DataControls"
xmlns:telerikListView="clr-namespace:Telerik.XamarinForms.DataControls.ListView;assembly=Telerik.XamarinForms.DataControls"
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"
xmlns:models="clr-namespace:AlertTest.Models"
mc:Ignorable="d"
xmlns:views="clr-namespace:AlertTest.Views"
x:Class="AlertTest.Views.MainPage">
<ContentPage.Resources>
<ResourceDictionary>
<DataTemplate x:Key="NonDivisibleTemplate">
<Grid>
<StackLayout Orientation="Vertical" Padding="10" Spacing="0" BackgroundColor="Yellow" InputTransparent="True" Unfocused="StackLayout_Unfocused">
<Label Text="{Binding ItemText}"/>
</StackLayout>
</DataTemplate>
<DataTemplate x:Key="DivisibleTemplate">
<Grid>
<StackLayout Orientation="Vertical" Padding="15" Spacing="0" BackgroundColor="White" Unfocused="StackLayout_Unfocused">
<Label Text="{Binding ItemText}" FontSize="Large" HorizontalTextAlignment="Center"/>
<Label Text="{Binding ItemText}" FontSize="Small" FontAttributes="Italic" TextColor="Gray"/>
</StackLayout>
</Grid>
</DataTemplate>
<models:MyDataTemplateSelector
x:Key="MyTemplateSelector"
NonDivisibleTemplate="{StaticResource NonDivisibleTemplate}"
DivisibleTemplate="{StaticResource DivisibleTemplate}" />
</ResourceDictionary>
</ContentPage.Resources>
<StackLayout VerticalOptions="StartAndExpand">
<!-- Place new controls here -->
<views:FloatingLabelEntry EntryText="{Binding EntryText}" Margin="20" BackgroundColor="Yellow" PlaceholderText="{Binding PlaceholderText}"/>
<Entry TextChanged="Entry_TextChanged" BackgroundColor="AliceBlue" Margin="20"/>
<telerikDataControls:RadListView x:Name="listView" ItemsSource="{Binding ListItems}" ItemTemplateSelector="{StaticResource MyTemplateSelector}" SelectionMode="Single" IsItemSwipeEnabled="False" >
<!--<telerikDataControls:RadListView.ItemSwipeContentTemplate>
<DataTemplate>
-->
<!--<Grid Margin="0"
Padding="0"
ColumnSpacing="0"
RowSpacing="0">-->
<!--<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>-->
<!--
<StackLayout Orientation="Horizontal" HorizontalOptions="FillAndExpand">
<Label BackgroundColor="#2474d2"
HorizontalTextAlignment="Start"
HorizontalOptions="StartAndExpand"
Text="Mark as read"
TextColor="White"
VerticalTextAlignment="Center" />
<Label Grid.Column="2"
BackgroundColor="Red"
HorizontalTextAlignment="End"
HorizontalOptions="EndAndExpand"
Text="delete"
TextColor="White"
VerticalTextAlignment="Center"/>
</StackLayout>
-->
<!--</Grid>-->
<!--
</DataTemplate>
</telerikDataControls:RadListView.ItemSwipeContentTemplate>-->
</telerikDataControls:RadListView>
</StackLayout>
</ContentPage>
Happened once so far. Crashes the app. Full log is attached.
Unhandled Exception:
Dear,
It would be interesting if the map control could read a shapefile or kml file and visualize the shapes, besides exporting the modifications of the map (shapes) to a shp format.
Best regards.
Hi,
I have been using Telerik controls for the last 4 years in WPF. One of the controls widely used is the RadScheduleView in which I manage customer appointments in hair dresser salons. Recently I tried to implement the same functionality on Mobile Apps using Xamarin.
Some of the appointments generated by users contain overlapping times since they are serviced by different employees. This functionality in WPF is managed perfectly using RadScheduleView. Now I am using the same data by downloading it into a MobileApp (for now Android App) and reproducing similar appointments but on RadCalendar. Every time an appointment have overlaps, the way system is recreating it on the calendar is misleading and sometimes appointments are also hidden.
The following is a Code snippet that also produce the same results.
Steps to reproduce:
1. Appointment View module that inherits from Telerik.XamarinForms.Input.Appointment and add additional properties to manage appointments:
public class AppointmentViewModel : Telerik.XamarinForms.Input.Appointment { public Int32 PK { get; set; } = -1; public String DisplayStartTime { get { return StartDate.ToString("HH:mm"); } } public String DisplayEndTime { get { return EndDate.ToString("HH:mm"); } } public double AppointmentDate { get { return StartDate.Date.ToOADate(); } } public string AppointmentDisplayDate { get { return StartDate.Date.ToString("ddd dd MMM"); } } }
Note: To render appointments, I am still using default properties of the class Telerik.XamarinForms.Input.Appointment, see point 3.
2. Create Page (XAML) with calendar and a refresh button:
<?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:telerikPrimitives="clr-namespace:Telerik.XamarinForms.Primitives;assembly=Telerik.XamarinForms.Primitives"
xmlns:zxing="clr-namespace:ZXing.Net.Mobile.Forms;assembly=ZXing.Net.Mobile.Forms"
xmlns:telerikInput="clr-namespace:Telerik.XamarinForms.Input;assembly=Telerik.XamarinForms.Input"
xmlns:telerikGrid="clr-namespace:Telerik.XamarinForms.DataGrid;assembly=Telerik.XamarinForms.DataGrid"
xmlns:helper="clr-namespace:ProductManager.Helper_Code"
xmlns:telerikDataControls="clr-namespace:Telerik.XamarinForms.DataControls;assembly=Telerik.XamarinForms.DataControls"
xmlns:telerikListView="clr-namespace:Telerik.XamarinForms.DataControls.ListView;assembly=Telerik.XamarinForms.DataControls"
x:Class="ProductManager.Pages.pgAppointments" Appearing="ContentPage_Appearing" Disappearing="ContentPage_Disappearing" >
<ContentPage.Content>
<Gride HorizontalOptions="Fill" VerticalOptions="Fill" Margin="0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<telerikInput:RadCalendar x:Name="cntAppoints"
Grid.Row="0"
VerticalOptions="Fill" HorizontalOptions="Fill"
GridLinesDisplayMode="Show"
ViewMode="Day"
DisplayDateChanged="CntAppoints_DisplayDateChanged"
SelectionMode="Single" SelectionChanged="CntAppoints_SelectionChanged"
NativeControlLoaded="CntAppoints_NativeControlLoaded"
TimeSlotTapped="CntAppoints_TimeSlotTapped"
ViewChanged="CntAppoints_ViewChanged" CellTapped="CntAppoints_CellTapped"
SchedulingUiEnabled="True" AppointmentTapped="CntAppoints_AppointmentTapped" >
<telerikInput:RadCalendar.DayViewSettings>
<telerikInput:DayViewSettings DayStartTime="00:00:00"
DayEndTime="23:40:00"
TimelineInterval="15" />
</telerikInput:RadCalendar.DayViewSettings>
<telerikInput:RadCalendar.DayViewStyle>
<telerikInput:DayViewStyle
AllDayAppointmentFontSize="10"
TimelineLabelsTextColor="DarkGray"
TimelineLabelsFontSize="10"
AppointmentFontSize="10"
AppointmentDetailsFontSize="8"/>
</telerikInput:RadCalendar.DayViewStyle>
<telerikInput:RadCalendar.MultiDayViewSettings>
<telerikInput:MultiDayViewSettings DayStartTime="00:00:00"
DayEndTime="23:40:00"
TimelineInterval="15" />
</telerikInput:RadCalendar.MultiDayViewSettings>
<telerikInput:RadCalendar.MultiDayViewStyle>
<telerikInput:MultiDayViewStyle
AllDayAppointmentFontSize="10"
TimelineLabelsTextColor="DarkGray"
TimelineLabelsFontSize="10"
AppointmentFontSize="10"
AppointmentDetailsFontSize="8"/>
</telerikInput:RadCalendar.MultiDayViewStyle>
</telerikInput:RadCalendar>
<telerikInput:RadButton x:Name="btnRefresh"
Clicked="BtnRefresh_Clicked" HorizontalContentAlignment="End" VerticalContentAlignment="Center"
HorizontalOptions="Center" VerticalOptions="Center"
BackgroundColor="Transparent"
Grid.Row="1" Text="Refresh" />
</Grid>
</ContentPage.Content>
</ContentPage>
3. Code Behind the Refresh Button :
private void BtnRefresh_Clicked(object sender, EventArgs e)
{
cntAppoints.DisplayDate = DateTime.Parse("11/05/2019");
ObservableCollection<AppointmentViewModel> apps = new ObservableCollection<AppointmentViewModel>() {
new AppointmentViewModel()
{
PK =1,
Title="Customer 1",
StartDate=DateTime.Parse("2019-05-11T08:00:00"),
EndDate=DateTime.Parse("2019-05-11T08:45:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =2,
Title="Customer 2",
StartDate=DateTime.Parse("2019-05-11T08:00:00"),
EndDate=DateTime.Parse("2019-05-11T18:00:00"),
Detail="Station: STATION 3",
IsAllDay=true
},
new AppointmentViewModel()
{
PK =3,
Title="Customer 3",
StartDate=DateTime.Parse("2019-05-11T08:00:00"),
EndDate=DateTime.Parse("2019-05-11T08:30:00"),
Detail="Station: STATION 4"
},
new AppointmentViewModel()
{
PK =4,
Title="Customer 4",
StartDate=DateTime.Parse("2019-05-11T08:30:00"),
EndDate=DateTime.Parse("2019-05-11T08:45:00"),
Detail="Station: STATION 4"
},
new AppointmentViewModel()
{
PK =5,
Title="Customer 5",
StartDate=DateTime.Parse("2019-05-11T09:00:00"),
EndDate=DateTime.Parse("2019-05-11T09:30:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =6,
Title="Customer 6",
StartDate=DateTime.Parse("2019-05-11T09:00:00"),
EndDate=DateTime.Parse("2019-05-11T09:15:00"),
Detail="Station: STATION 4"
},
new AppointmentViewModel()
{
PK =7,
Title="Customer 7",
StartDate=DateTime.Parse("2019-05-11T09:15:00"),
EndDate=DateTime.Parse("2019-05-11T10:00:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =8,
Title="Customer 8",
StartDate=DateTime.Parse("2019-05-11T09:30:00"),
EndDate=DateTime.Parse("2019-05-11T09:45:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =9,
Title="Customer 9",
StartDate=DateTime.Parse("2019-05-11T09:45:00"),
EndDate=DateTime.Parse("2019-05-11T10:30:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =10,
Title="Customer 10",
StartDate=DateTime.Parse("2019-05-11T10:00:00"),
EndDate=DateTime.Parse("2019-05-11T10:30:00"),
Detail="Station: STATION 4"
},
new AppointmentViewModel()
{
PK =11,
Title="Customer 11",
StartDate=DateTime.Parse("2019-05-11T11:30:00"),
EndDate=DateTime.Parse("2019-05-11T12:15:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =12,
Title="Customer 12",
StartDate=DateTime.Parse("2019-05-11T12:00:00"),
EndDate=DateTime.Parse("2019-05-11T12:45:00"),
Detail="Station: STATION 4"
},
new AppointmentViewModel()
{
PK =13,
Title="Customer 13",
StartDate=DateTime.Parse("2019-05-11T12:30:00"),
EndDate=DateTime.Parse("2019-05-11T13:15:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =14,
Title="Customer 14",
StartDate=DateTime.Parse("2019-05-11T12:30:00"),
EndDate=DateTime.Parse("2019-05-11T13:00:00"),
Detail="Station: STATION 4"
},
new AppointmentViewModel()
{
PK =15,
Title="Customer 15",
StartDate=DateTime.Parse("2019-05-11T13:00:00"),
EndDate=DateTime.Parse("2019-05-11T13:15:00"),
Detail="Station: STATION 2"
},
new AppointmentViewModel()
{
PK =16,
Title="Customer 16",
StartDate=DateTime.Parse("2019-05-11T13:15:00"),
EndDate=DateTime.Parse("2019-05-11T13:30:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =17,
Title="Customer 17",
StartDate=DateTime.Parse("2019-05-11T13:15:00"),
EndDate=DateTime.Parse("2019-05-11T13:30:00"),
Detail="Station: STATION 4"
},
new AppointmentViewModel()
{
PK =18,
Title="Customer 18",
StartDate=DateTime.Parse("2019-05-11T13:30:00"),
EndDate=DateTime.Parse("2019-05-11T14:00:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =19,
Title="Customer 19",
StartDate=DateTime.Parse("2019-05-11T13:30:00"),
EndDate=DateTime.Parse("2019-05-11T14:00:00"),
Detail="Station: STATION 4"
},
new AppointmentViewModel()
{
PK =20,
Title="Customer 20",
StartDate=DateTime.Parse("2019-05-11T14:00:00"),
EndDate=DateTime.Parse("2019-05-11T14:30:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =21,
Title="Customer 21",
StartDate=DateTime.Parse("2019-05-11T14:30:00"),
EndDate=DateTime.Parse("2019-05-11T15:00:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =22,
Title="Customer 22",
StartDate=DateTime.Parse("2019-05-11T14:30:00"),
EndDate=DateTime.Parse("2019-05-11T15:00:00"),
Detail="Station: STATION 4"
},
new AppointmentViewModel()
{
PK =23,
Title="Customer 23",
StartDate=DateTime.Parse("2019-05-11T15:00:00"),
EndDate=DateTime.Parse("2019-05-11T15:30:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =24,
Title="Customer 24",
StartDate=DateTime.Parse("2019-05-11T15:00:00"),
EndDate=DateTime.Parse("2019-05-11T15:45:00"),
Detail="Station: Station 1nServices: head massage and shampoo, short to medium blowdry"
},
new AppointmentViewModel()
{
PK =25,
Title="Customer 25",
StartDate=DateTime.Parse("2019-05-11T15:15:00"),
EndDate=DateTime.Parse("2019-05-11T15:30:00"),
Detail="Station: STATION 2"
},
new AppointmentViewModel()
{
PK =26,
Title="Customer 26",
StartDate=DateTime.Parse("2019-05-11T15:30:00"),
EndDate=DateTime.Parse("2019-05-11T16:00:00"),
Detail="Station: STATION 4"
},
new AppointmentViewModel()
{
PK =27,
Title="Customer 27",
StartDate=DateTime.Parse("2019-05-11T15:45:00"),
EndDate=DateTime.Parse("2019-05-11T16:15:00"),
Detail="Station: STATION 2"
},
new AppointmentViewModel()
{
PK =28,
Title="Customer 28",
StartDate=DateTime.Parse("2019-05-11T16:00:00"),
EndDate=DateTime.Parse("2019-05-11T16:30:00"),
Detail="Station: STATION 4"
},
new AppointmentViewModel()
{
PK =29,
Title="Customer 29",
StartDate=DateTime.Parse("2019-05-11T16:30:00"),
EndDate=DateTime.Parse("2019-05-11T16:45:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =30,
Title="Customer 30",
StartDate=DateTime.Parse("2019-05-11T16:45:00"),
EndDate=DateTime.Parse("2019-05-11T17:15:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =31,
Title="Customer 31",
StartDate=DateTime.Parse("2019-05-11T17:00:00"),
EndDate=DateTime.Parse("2019-05-11T17:30:00"),
Detail="Station: STATION 4"
},
new AppointmentViewModel()
{
PK =32,
Title="Customer 32",
StartDate=DateTime.Parse("2019-05-11T17:15:00"),
EndDate=DateTime.Parse("2019-05-11T17:45:00"),
Detail="Station: Station 1"
},
new AppointmentViewModel()
{
PK =33,
Title="Customer 33",
StartDate=DateTime.Parse("2019-05-11T17:15:00"),
EndDate=DateTime.Parse("2019-05-11T17:45:00"),
Detail="Station: STATION 4"
}
};
cntAppoints.AppointmentsSource = null;
cntAppoints.AppointmentsSource = apps;
//GetData(cntAppoints.DisplayDate);
//expFilters.IsExpanded = false;
}
4. After running the above code, the following issues are encountered when appointments are generated on the calendar (screens taken from original application):
Can you please give me an indication what I am doing wrong in my code or how can avoid such cases. The scenarios indicated above are misleading to the final users. I notised that such tickets for similar issues where raised since 2017 but never finally answered.
It would be a good to have function to be able to swipe on the header and also to be able to swipe on the content area to go to next tab.
This request is for iOS and Android
Hi,
As the header suggests, Swipe No Longer Works When Offset And Threshold Are Equal, the swipe closes on finger release. This started happening in the latest release, 2019.2.619.1, previously this worked without issue.
This can be replicated in the SDKBrowser by setting the following in Cell Swipe - Interactive Content example:
SwipeOffset="70, 0, 0, 0"
SwipeThreshold="70"
I have only tested this on Android.
Regards
Anthony
I would like to extend my XF project to Windows Presentation Framework (WPF) and MacOs when possible, both now supported by XF.
Request is that Telerik begin to include some work in these areas in its near-future roadmaps.
Any version of Xamarin.Forms, the iOS version of the application crashes when attempting to apply a custom font "parameter descriptor cannot be null"
With this resource defined, and the OpenSans-Bold.ttf is in the Resources directory, marked as bundle resource...
<OnPlatform x:TypeArguments="x:String" x:Key="BoldFont">
<On Platform="Android" Value="OpenSans-Bold.ttf#Open Sans" />
<On Platform="iOS" Value="OpenSans-Bold" />
</OnPlatform>
And using this code for the style (created from the Telerik login view template, with some modifications):
<Style x:Key="LoginEntryStyle"
TargetType="telerikInput:RadEntry">
<Setter Property="TextColor"
Value="{StaticResource DarkTextColor}" />
<Setter Property="WatermarkTextColor"
Value="{StaticResource LightBlueColor}" />
<Setter Property="FontSize"
Value="14" />
<Setter Property="FontFamily"
Value="{StaticResource BoldFont}" />
<Setter Property="HeightRequest"
Value="48" />
<Setter Property="Margin"
Value="0,0,0,16" />
<Setter Property="BorderStyle">
<Setter.Value>
<telerikInput:BorderStyle BorderColor="{StaticResource LightBlueColor}"
BorderThickness="1"
CornerRadius="8" />
</Setter.Value>
</Setter>
</Style>