Telerik Forums
UI for .NET MAUI Forum
1 answer
78 views
I used DataForm in my old applications, But in MAUI I didn't see any thing. So could you please help me to understand that Telerik is still adopting MAUI?
Lance | Senior Manager Technical Support
Telerik team
 answered on 02 Sep 2022
2 answers
599 views

I'm just wondering if you folks have run into major UI differences when porting Xamarin code over...

Xamarin version:

Essentially identical code in Maui (only differences were required by Maui, such as SelectorSettings --> PopupSettings):

 

Code involved:

 


<?xml version="1.0" encoding="utf-8" ?>
<ContentView
    x:Class="iTrackBilliards.Views.RotationView"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:controls="clr-namespace:iTrackBilliards.Controls;assembly=iTrackBilliards"
    xmlns:helpers="clr-namespace:iTrackBilliards.Helpers;assembly=iTrackBilliards"
    xmlns:resx="clr-namespace:iTrackBilliards.Resources;assembly=iTrackBilliards"
    xmlns:telerik="http://schemas.telerik.com/2022/xaml/maui"
    xmlns:viewModels="clr-namespace:iTrackBilliards.ViewModels;assembly=iTrackBilliards">
    <ContentView.Resources>
        <helpers:RotationCellContentSelector x:Key="RotationCellContentSelector">
            <helpers:RotationCellContentSelector.CellTemplatePlayer1>
                <telerik:DataGridTextCellStyle FontSize="{OnPlatform Default=18, Android=11, iOS=10}" TextColor="{StaticResource Player1Color}" />
            </helpers:RotationCellContentSelector.CellTemplatePlayer1>
            <helpers:RotationCellContentSelector.CellTemplatePlayer2>
                <telerik:DataGridTextCellStyle FontSize="{OnPlatform Default=18, Android=11, iOS=10}" TextColor="{StaticResource Player2Color}" />
            </helpers:RotationCellContentSelector.CellTemplatePlayer2>
        </helpers:RotationCellContentSelector>
        <Style BasedOn="{StaticResource SmallLabelStyleCentered}" TargetType="Label" />
    </ContentView.Resources>
    <ContentView.Content>
        <FlexLayout
            Margin="{OnPlatform Default='10',
                                Android='3,10',
                                iOS='3,10'}"
            x:DataType="viewModels:RotationBaseViewModel"
            Direction="Column"
            HorizontalOptions="Center"
            WidthRequest="{OnPlatform Default=800,
                                      Android=350,
                                      iOS=350}">
            <!--#region Player, Game, Inning-->
            <Grid
                ColumnDefinitions="Auto,*,*,Auto, Auto"
                HorizontalOptions="StartAndExpand"
                RowDefinitions="Auto,Auto">
                <!--#region Player-->
                <controls:GetShowPlayerControl
                    Grid.Row="0"
                    Grid.Column="0"
                    Grid.ColumnSpan="5"
                    CurrentPlayer="{Binding CurrentPlayer, Mode=TwoWay}"
                    CurrentPlayerName="{Binding CurrentPlayerName, Mode=TwoWay}"
                    PlayerColor="{Binding PlayerColor, Mode=TwoWay}"
                    PlayerList="{Binding PlayerList}"
                    SelectPlayerIsEnabled="{Binding SelectPlayerIsEnabled}" />
                <!--#endregion-->
                <!--#region Game and Inning-->
                <Label
                    Grid.Row="1"
                    Grid.Column="0"
                    Margin="{OnPlatform Default='0,0,10,0',
                                        Android='0,0,2,0',
                                        iOS='0,0,3,0'}"
                    Style="{StaticResource SmallLabelStyleCentered}"
                    Text="{x:Static resx:AppResources.Game}"
                    VerticalOptions="Center" />
                <telerik:RadListPicker
                    Grid.Row="1"
                    Grid.Column="1"
                    IsVisible="{Binding SelectGameIsEnabled}"
                    ItemsSource="{Binding Games}"
                    SelectedItem="{Binding Game, Mode=TwoWay}">
                    <VisualElement.Behaviors>
                        <telerik:RadEventToCommandBehavior Command="{Binding GameSelectionChangedCommand}" EventName="SelectionChanged" />
                    </VisualElement.Behaviors>
                    <telerik:RadListPicker.PopupSettings>
                        <telerik:PickerPopupSettings FooterTemplate="{StaticResource FooterTemplate}" HeaderTemplate="{StaticResource GameHeaderTemplate}" />
                    </telerik:RadListPicker.PopupSettings>
                </telerik:RadListPicker>
                <Label
                    Grid.Row="1"
                    Grid.Column="1"
                    Margin="{OnPlatform Default='0,0,10,0',
                                        Android='0,0,2,0',
                                        iOS='0,0,2,0'}"
                    IsVisible="{Binding SelectGameIsEnabled, Converter={helpers:BooleanConverter}}"
                    Style="{StaticResource SelectedEntityLabelStyle}"
                    Text="{Binding Game}"
                    VerticalOptions="Center" />
                <Label
                    Grid.Row="1"
                    Grid.Column="3"
                    Style="{StaticResource SmallLabelStyleCentered}"
                    Text="{x:Static resx:AppResources.Inning}" />
                <Label
                    Grid.Row="1"
                    Grid.Column="4"
                    FontAttributes="Bold"
                    Style="{StaticResource SelectedEntityLabelStyle}"
                    Text="{Binding InningNumber}"
                    VerticalOptions="Center" />
                <!--#endregion-->
            </Grid>
            <!--#endregion-->
            <!--#region Balls Left and Save Inning Button-->
            <telerik:RadBorder BorderColor="{StaticResource NormalTextColor}" BorderThickness="0,1,0,0">
                <FlexLayout
                    Margin="{OnPlatform Default='0,35,0,0',
                                        Android='0,25,0,0',
                                        iOS='0,20,0,0'}"
                    Direction="Row"
                    HeightRequest="{OnPlatform Default=50,
                                               Android=30,
                                               iOS=40}"
                    JustifyContent="SpaceBetween">
                    <!--  Balls Left  -->
                    <StackLayout
                        HorizontalOptions="Start"
                        Orientation="Horizontal"
                        VerticalOptions="Center">
                        <Label Style="{StaticResource SmallLabelStyleCentered}" Text="{x:Static resx:AppResources.BallsLeft}" />
                        <telerik:RadNumericInput
                            ControlTemplate="{StaticResource CustomRadNumericInputControlTemplate}"
                            Maximum="{Binding MaxBallsLeft}"
                            Minimum="0"
                            WidthRequest="{OnPlatform Default=250,
                                                      Android=135,
                                                      iOS=135}"
                            Value="{Binding BallsLeft, Mode=TwoWay}" />
                    </StackLayout>
                    <!--  Save Inning Button  -->
                    <StackLayout
                        HorizontalOptions="End"
                        Orientation="Horizontal"
                        VerticalOptions="Center">
                        <telerik:RadButton
                            Command="{Binding SaveInningCommand}"
                            HorizontalOptions="Center"
                            IsEnabled="{Binding IsSaveEnabled}"
                            Text="{Binding SaveInningButtonText}"
                            VerticalOptions="Center"
                            WidthRequest="{OnPlatform Default=85,
                                                      Android=90,
                                                      iOS=70}" />
                    </StackLayout>
                </FlexLayout>
            </telerik:RadBorder>
            <!--#endregion-->
            <!--#region isBreak and Alternate Breaks-->
            <telerik:RadBorder>
                <FlexLayout
                    Margin="{OnIdiom '0,10',
                                     Phone='0,5'}"
                    Direction="Row"
                    HeightRequest="{OnIdiom 60,
                                            Phone=50}"
                    JustifyContent="SpaceBetween"
                    WidthRequest="{OnPlatform Default=800,
                                              Android=300,
                                              iOS=300}">
                    <StackLayout
                        HorizontalOptions="Start"
                        Orientation="Horizontal"
                        VerticalOptions="Center">
                        <Label Style="{StaticResource SmallLabelStyleCentered}" Text="{x:Static resx:AppResources.Break}" />
                        <telerik:RadCheckBox IsChecked="{Binding IsBreakShot}" VerticalOptions="Center" />
                    </StackLayout>
                    <StackLayout
                        HorizontalOptions="Start"
                        Orientation="Horizontal"
                        VerticalOptions="Center">
                        <Label
                            IsVisible="{Binding AlternateBreakShots}"
                            Style="{StaticResource SmallLabelStyleCentered}"
                            Text="Alternate Breaks" />
                    </StackLayout>
                </FlexLayout>
            </telerik:RadBorder>
            <!--#endregion-->
            <!--#region On Break-->
            <telerik:RadBorder>
                <FlexLayout
                    Direction="Row"
                    HeightRequest="{OnPlatform Default=50,
                                               Android=30,
                                               iOS=40}"
                    JustifyContent="SpaceBetween">
                    <StackLayout
                        HorizontalOptions="Start"
                        Orientation="Horizontal"
                        VerticalOptions="Center">
                        <Label Style="{StaticResource SmallLabelStyleCentered}" Text="{x:Static resx:AppResources.OnBreak}" />
                        <telerik:RadNumericInput
                            ControlTemplate="{StaticResource CustomRadNumericInputControlTemplate}"
                            IsEnabled="{Binding IsBreakShot}"
                            Maximum="{Binding MaxBallsOnBreak}"
                            Minimum="0"
                            WidthRequest="{OnPlatform Default=250,
                                                      Android=135,
                                                      iOS=135}"
                            Value="{Binding BallsOnBreak, Mode=TwoWay}" />
                    </StackLayout>
                </FlexLayout>
            </telerik:RadBorder>
            <!--#endregion-->
            <!--#region List Pickers-->
            <Grid
                Margin="{OnPlatform Default='0,20,0,0',
                                    Android='10,5,0,0',
                                    iOS='10,5,0,0'}"
                HorizontalOptions="Start"
                RowDefinitions="Auto,Auto"
                RowSpacing="{OnPlatform Default=30,
                                        Android=5,
                                        iOS=5}">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="{OnPlatform Default=50, Android=25, iOS=25}" />
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="Auto" />
                </Grid.ColumnDefinitions>
                <!--  Notation  -->
                <Label
                    Grid.Row="0"
                    Grid.Column="0"
                    HorizontalOptions="End"
                    Style="{StaticResource SmallLabelStyle}"
                    Text="{x:Static resx:AppResources.Notation}"
                    VerticalOptions="{OnPlatform Default=Center,
                                                 Android=End,
                                                 iOS=End}" />
                <telerik:RadListPicker
                    Grid.Row="0"
                    Grid.Column="1"
                    HorizontalOptions="Start"
                    ItemsSource="{Binding RequiredNotationList}"
                    SelectedItem="{Binding RequiredNotation, Mode=TwoWay}">
                    <telerik:RadListPicker.PopupSettings>
                        <telerik:PickerPopupSettings FooterTemplate="{StaticResource FooterTemplate}" HeaderTemplate="{StaticResource NotationHeaderTemplate}" />
                    </telerik:RadListPicker.PopupSettings>
                </telerik:RadListPicker>
                <!--  Modifier  -->
                <Label
                    Grid.Row="0"
                    Grid.Column="3"
                    HorizontalOptions="End"
                    Style="{StaticResource SmallLabelStyleCentered}"
                    Text="{x:Static resx:AppResources.Modifier}"
                    VerticalOptions="{OnPlatform Default=Center,
                                                 Android=End,
                                                 iOS=End}" />
                <telerik:RadListPicker
                    Grid.Row="0"
                    Grid.Column="4"
                    HorizontalOptions="Start"
                    ItemsSource="{Binding NotationModifierList}"
                    SelectedItem="{Binding NotationModifier, Mode=TwoWay}">
                    <telerik:RadListPicker.PopupSettings>
                        <telerik:PickerPopupSettings FooterTemplate="{StaticResource FooterTemplate}" HeaderTemplate="{StaticResource ModifierHeaderTemplate}" />
                    </telerik:RadListPicker.PopupSettings>
                </telerik:RadListPicker>
                <!--  Foul  -->
                <Label
                    Grid.Row="1"
                    Grid.Column="0"
                    HorizontalOptions="End"
                    Style="{StaticResource SmallLabelStyleCentered}"
                    Text="{x:Static resx:AppResources.Foul}"
                    VerticalOptions="{OnPlatform Default=Center,
                                                 Android=End,
                                                 iOS=End}" />
                <telerik:RadListPicker
                    Grid.Row="1"
                    Grid.Column="1"
                    HorizontalOptions="Start"
                    ItemsSource="{Binding FoulList}"
                    SelectedItem="{Binding Foul, Mode=TwoWay}">
                    <telerik:RadListPicker.PopupSettings>
                        <telerik:PickerPopupSettings FooterTemplate="{StaticResource FooterTemplate}" HeaderTemplate="{StaticResource FoulHeaderTemplate}" />
                    </telerik:RadListPicker.PopupSettings>
                </telerik:RadListPicker>
                <!--  Miss Reason  -->
                <Label
                    Grid.Row="1"
                    Grid.Column="3"
                    HorizontalOptions="End"
                    Style="{StaticResource SmallLabelStyleCentered}"
                    Text="{x:Static resx:AppResources.Optional}"
                    VerticalOptions="{OnPlatform Default=Center,
                                                 Android=End,
                                                 iOS=End}" />
                <telerik:RadListPicker
                    Grid.Row="1"
                    Grid.Column="4"
                    HorizontalOptions="Start"
                    ItemsSource="{Binding OptionalList}"
                    SelectedItem="{Binding Optional, Mode=TwoWay}">
                    <telerik:RadListPicker.PopupSettings>
                        <telerik:PickerPopupSettings FooterTemplate="{StaticResource FooterTemplate}" HeaderTemplate="{StaticResource OptionalHeaderTemplate}" />
                    </telerik:RadListPicker.PopupSettings>
                </telerik:RadListPicker>
            </Grid>
            <!--#endregion-->
            <!--#region Stats Grid-->
            <Grid
                Margin="{OnPlatform Default='20,15,0,0',
                                    Android='5,15,0,0',
                                    iOS='5,15,0,0'}"
                ColumnDefinitions="1.5*, *, 1.5*, *, 1.5*, *, 1.5*, *"
                HeightRequest="{OnPlatform Default=175,
                                           Android=115,
                                           iOS=100}"
                RowDefinitions="Auto,Auto,Auto,Auto,Auto"
                WidthRequest="{OnPlatform Default=650,
                                          Android=350,
                                          iOS=325}">
                <!--  Player 1  -->
                <Label
                    Grid.Row="0"
                    Grid.Column="0"
                    Grid.ColumnSpan="8"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player1Truncated, Mode=TwoWay}"
                    TextColor="DeepPink" />
                <!--  Player 2  -->
                <Label
                    Grid.Row="0"
                    Grid.Column="4"
                    Grid.ColumnSpan="4"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player2}"
                    TextColor="GreenYellow" />
                <!--  Player 1 TPA  -->
                <Label
                    Grid.Row="1"
                    Grid.Column="0"
                    HorizontalTextAlignment="Start"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.TPA}" />
                <Label
                    Grid.Row="1"
                    Grid.Column="1"
                    HorizontalTextAlignment="End"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding DisplayPlayer1Tpa}" />
                <!--  Player 1 Games Won  -->
                <Label
                    Grid.Row="1"
                    Grid.Column="2"
                    HorizontalTextAlignment="Start"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.GamesWon}" />
                <Label
                    Grid.Row="1"
                    Grid.Column="3"
                    HorizontalTextAlignment="End"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player1GamesWon}"
                    TextColor="DeepPink" />
                <!--  Player 2 TPA  -->
                <Label
                    Grid.Row="1"
                    Grid.Column="4"
                    HorizontalTextAlignment="Start"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.TPA}" />
                <Label
                    Grid.Row="1"
                    Grid.Column="5"
                    HorizontalTextAlignment="End"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding DisplayPlayer2Tpa}" />
                <!--  Player 2 Games Won  -->
                <Label
                    Grid.Row="1"
                    Grid.Column="6"
                    HorizontalTextAlignment="Start"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.GamesWon}" />
                <Label
                    Grid.Row="1"
                    Grid.Column="7"
                    HorizontalTextAlignment="End"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player2GamesWon}"
                    TextColor="GreenYellow" />
                <!--  Player 1 Balls Pocketed  -->
                <Label
                    Grid.Row="2"
                    Grid.Column="0"
                    HorizontalTextAlignment="Start"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.Pocketed}" />
                <Label
                    Grid.Row="2"
                    Grid.Column="1"
                    HorizontalTextAlignment="End"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player1BallsPocketed}" />
                <!--  Player 1 Bad Position  -->
                <Label
                    Grid.Row="2"
                    Grid.Column="2"
                    HorizontalTextAlignment="Start"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.BadPosition}" />
                <Label
                    Grid.Row="2"
                    Grid.Column="3"
                    HorizontalTextAlignment="End"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player1BadPosition}" />
                <!--  Player 2 Balls Pocketed  -->
                <Label
                    Grid.Row="2"
                    Grid.Column="4"
                    HorizontalTextAlignment="Start"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.Pocketed}" />
                <Label
                    Grid.Row="2"
                    Grid.Column="5"
                    HorizontalTextAlignment="End"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player2BallsPocketed}" />
                <!--  Player 2 Bad Position  -->
                <Label
                    Grid.Row="2"
                    Grid.Column="6"
                    HorizontalTextAlignment="Start"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.BadPosition}" />
                <Label
                    Grid.Row="2"
                    Grid.Column="7"
                    HorizontalTextAlignment="End"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player2BadPosition}" />
                <!--  Player 1 Bad Safety  -->
                <Label
                    Grid.Row="3"
                    Grid.Column="0"
                    HorizontalTextAlignment="Start"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.BadSafety}" />
                <Label
                    Grid.Row="3"
                    Grid.Column="1"
                    HorizontalTextAlignment="End"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player1BadSafety}" />
                <!--  Player 1 Misses  -->
                <Label
                    Grid.Row="3"
                    Grid.Column="2"
                    HorizontalTextAlignment="Start"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.Misses}" />
                <Label
                    Grid.Row="3"
                    Grid.Column="3"
                    HorizontalTextAlignment="End"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player1Misses}" />
                <!--  Player 2 Bad Safety  -->
                <Label
                    Grid.Row="3"
                    Grid.Column="4"
                    HorizontalTextAlignment="Start"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.BadSafety}" />
                <Label
                    Grid.Row="3"
                    Grid.Column="5"
                    HorizontalTextAlignment="End"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player2BadSafety}" />
                <!--  Player 2 Misses  -->
                <Label
                    Grid.Row="3"
                    Grid.Column="6"
                    HorizontalTextAlignment="Start"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.Misses}" />
                <Label
                    Grid.Row="3"
                    Grid.Column="7"
                    HorizontalTextAlignment="End"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player2Misses}" />
                <!--  Player 1 Bad Kicks  -->
                <Label
                    Grid.Row="4"
                    Grid.Column="0"
                    HorizontalTextAlignment="Start"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.BadKick}" />
                <Label
                    Grid.Row="4"
                    Grid.Column="1"
                    HorizontalTextAlignment="End"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player1BadKicks}" />
                <!--  Player 1 Scratches On Break  -->
                <Label
                    Grid.Row="4"
                    Grid.Column="2"
                    HorizontalTextAlignment="Start"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.ScratchOnBreak}" />
                <Label
                    Grid.Row="4"
                    Grid.Column="3"
                    HorizontalTextAlignment="End"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player1ScratchOnBreak}" />
                <!--  Player 2 Bad Kicks  -->
                <Label
                    Grid.Row="4"
                    Grid.Column="4"
                    HorizontalTextAlignment="Start"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.BadKick}" />
                <Label
                    Grid.Row="4"
                    Grid.Column="5"
                    HorizontalTextAlignment="End"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player2BadKicks}" />
                <!--  Player 2 Scratches On Break  -->
                <Label
                    Grid.Row="4"
                    Grid.Column="6"
                    HorizontalTextAlignment="Start"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{x:Static resx:AppResources.ScratchOnBreak}" />
                <Label
                    Grid.Row="4"
                    Grid.Column="7"
                    HorizontalTextAlignment="End"
                    IsVisible="{Binding Player2Enabled}"
                    Style="{StaticResource StatLabelStyle}"
                    Text="{Binding Player2ScratchOnBreak}" />
            </Grid>
            <!--#endregion-->
            <!--#region Innings Grid-->
            <telerik:RadBorder
                BorderColor="{StaticResource NormalTextColor}"
                BorderThickness="1"
                HeightRequest="{OnPlatform Default=225,
                                           Android=225,
                                           iOS=225}"
                WidthRequest="{OnPlatform Default=800,
                                          Android=350,
                                          iOS=315}">
                <telerik:RadDataGrid
                    AutoGenerateColumns="False"
                    ItemsSource="{Binding Innings}"
                    SelectionStyle="{StaticResource CustomSelectionStyle}"
                    UserFilterMode="Disabled"
                    UserSortMode="None">
                    <telerik:RadDataGrid.SortDescriptors>
                        <telerik:PropertySortDescriptor PropertyName="Inning" SortOrder="Descending" />
                    </telerik:RadDataGrid.SortDescriptors>
                    <telerik:RadDataGrid.MouseHoverStyle>
                        <telerik:DataGridBorderStyle BackgroundColor="{StaticResource MouseHoverBackgroundColor}" />
                    </telerik:RadDataGrid.MouseHoverStyle>
                    <telerik:RadDataGrid.Columns>
                        <telerik:DataGridNumericalColumn
                            CanUserEdit="False"
                            CellContentStyle="{StaticResource CustomDataGridTextCellStyle}"
                            CellContentStyleSelector="{StaticResource RotationCellContentSelector}"
                            HeaderStyle="{StaticResource CustomDataGridColumnHeaderStyle}"
                            HeaderText="{x:Static resx:AppResources.Inning}"
                            PropertyName="Inning"
                            SizeMode="Stretch" />
                        <telerik:DataGridNumericalColumn
                            CanUserEdit="False"
                            CellContentStyle="{StaticResource CustomDataGridTextCellStyle}"
                            CellContentStyleSelector="{StaticResource RotationCellContentSelector}"
                            HeaderStyle="{StaticResource CustomDataGridColumnHeaderStyle}"
                            HeaderText="{x:Static resx:AppResources.Run}"
                            PropertyName="Run"
                            SizeMode="Stretch" />
                        <telerik:DataGridTextColumn
                            CanUserEdit="False"
                            CellContentStyle="{StaticResource CustomDataGridTextCellStyle}"
                            CellContentStyleSelector="{StaticResource RotationCellContentSelector}"
                            HeaderStyle="{StaticResource CustomDataGridColumnHeaderStyle}"
                            HeaderText="{x:Static resx:AppResources.Notation}"
                            PropertyName="Notation"
                            SizeMode="Stretch" />
                        <telerik:DataGridTextColumn
                            CanUserEdit="False"
                            CellContentStyle="{StaticResource CustomDataGridTextCellStyle}"
                            HeaderStyle="{StaticResource CustomDataGridColumnHeaderStyle}"
                            HeaderText="{x:Static resx:AppResources.Modifier}"
                            PropertyName="Modifier"
                            SizeMode="Stretch" />
                        <telerik:DataGridTextColumn
                            CanUserEdit="False"
                            CellContentStyle="{StaticResource CustomDataGridTextCellStyle}"
                            HeaderStyle="{StaticResource CustomDataGridColumnHeaderStyle}"
                            HeaderText="{x:Static resx:AppResources.Foul}"
                            PropertyName="Foul"
                            SizeMode="Stretch" />
                        <telerik:DataGridTextColumn
                            CanUserEdit="False"
                            CellContentStyle="{StaticResource CustomDataGridTextCellStyle}"
                            HeaderStyle="{StaticResource CustomDataGridColumnHeaderStyle}"
                            HeaderText="{x:Static resx:AppResources.Optional}"
                            PropertyName="Optional"
                            SizeMode="Stretch" />
                    </telerik:RadDataGrid.Columns>
                </telerik:RadDataGrid>
            </telerik:RadBorder>
            <!--#endregion-->
        </FlexLayout>
    </ContentView.Content>
</ContentView>
I was new to Xamarin Forms when I started this project. Have I written 'bad' XAML?
Didi
Telerik team
 answered on 25 Aug 2022
1 answer
166 views

Hi Telerik Team,

I noticed that there is no more "Telerik UI for .NET MAUI pkg & MAUI Workload Mismatch Issue" like below in the latest version 2.3.0, my understanding is: Telerik UI for .NET MAUI pkg still has the dependency on MAUI Workload, but it did a good job on compatibility.

It will be perfect if you guys can share more insight or details about this improvement.

WINAPPSDKGENERATEPROJECTPRIFILE : error : PRI175: 0x80073b0f - Processing Resources failed with error: Duplicate Entry.
WINAPPSDKGENERATEPROJECTPRIFILE : error : PRI222: 0x80073b0f - Unspecified error occurred.

 

Note: version 2.3.0/version 2.2.0 worked with MAUI 419/449 and no matter what combination.

 

Antoan
Telerik team
 answered on 10 Aug 2022
2 answers
808 views

Hey Team,

I got a error when we added Telerik.UI.for.MAUI.Trial 1.0.1 reference into my MAUI class libraries, It said Project XXX is not compatible with net6.0 (.NETCoreApp,Version=v6.0). Project XXX supports: net6.0-windows10.0.19041 (.NETCoreApp,Version=v6.0)

For right now we created Unit Test for ClassLibrary and it is related Net 6.0. ClassLibrary needs other projects&amp;amp;nbsp;reference which include telerik, you can see my below screenshot.

Repro steps:

1. Create a MAUI class Library A and add Telerik.UI.for.MAUI.Trial 1.0.1 reference into library A.

2. Create a MAUI ClassLibrary B and add ClassLibraryA reference into B.

Is there a way to fix this issue?

 

Thanks

Allen

 

 

Lance | Senior Manager Technical Support
Telerik team
 answered on 05 Aug 2022
1 answer
80 views

Hey Team,

I have a very strange question for you, I created a MAUI class library:  and then created a TestButton inherits from RadButton, 

like below

using Telerik.Maui.Controls;

namespace TelerikLib.Components
{
    public class NovaButton : RadButton
    {
    }
}

I also created a TestListView inherited from RadListView like below


<?xml version="1.0" encoding="utf-8" ?>
<telerik:RadListView xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:telerik="http://schemas.telerik.com/2022/xaml/maui"
             xmlns:local="clr-namespace:TelerikLib.Components"
             x:Class="TelerikLib.Components.TestListView" ItemsSource="{Binding Source}">
    <telerik:RadListView.BindingContext>
        <local:ViewModel />
    </telerik:RadListView.BindingContext>
    <telerik:RadListView.ItemTemplate>
        <DataTemplate>
            <telerik:ListViewTemplateCell>
                <telerik:ListViewTemplateCell.View>
                    <Grid>
                        <Label Margin="10" Text="{Binding Name}" />
                    </Grid>
                </telerik:ListViewTemplateCell.View>
            </telerik:ListViewTemplateCell>
        </DataTemplate>
    </telerik:RadListView.ItemTemplate>
</telerik:RadListView>


Code behind:

using Telerik.XamarinForms.DataControls;

namespace TelerikLib.Components;

public partial class TestListView : RadListView
{
	public TestListView()
	{
		InitializeComponent();
	}
}

After that I created a MAUI Main Project, and added class library reference into Main Project.

1. When I only add custom TestButton into Main Page, it runs well.

2. When I added custom TestListView, application always crashed, when I added  .UseTelerik() method, then it runs well. 

May I know why some components need .UseTelerik(), but some are not? 

If I define custom components based on Telerik, should I have to add .UseTelerik() method into MAUIProgram?

 

Issue: based on Telerk.UI.for.MAUI Trial 1.0.1 + MAUI 6.0.312

 

Thanks

Allen

 

Venelin
Telerik team
 answered on 11 Jul 2022
1 answer
161 views

Hello,

Im Implementing Telerik trail version of MAUI for MAC using Visual Studio 17.3 preview and when I try to use the feature of multi screen in MAUI for MAC I get the following error using Telerik: 

Terminating app due to uncaught exception 'NSObjectNotAvailableException', reason: 'UIAlertView is deprecated and unavailable for UIScene based applications, please use UIAlertController!'

I do the configuration that Microsoft indicates to use multi windows in MAUI MAC by adding the class named SceneDelegate to the platform (MacCatalyst) and edit the plist file of the platform(MacCatalyst), after that and using Telerik the application crashes before it can show anything. So if I reset the info.plist file it works.

Also I did another test in a new project and when I use the multi window the Telerik elements disappear.

Thank you in advance.

Didi
Telerik team
 answered on 05 Jul 2022
1 answer
339 views

Simple project with a DataGrid on the MainPage.

After updating VS 2022 to 17.3 Preview 2.0, an error occurs when trying to debug the project.

If running the Windows platform, I get an error which prevents the project from running (see image). PRI175 "Duplicate Entry"

If running the Android platform, the project runs, but there's an error (FileNotFoundException: Telerik.Maui.Core.resources) during start up and the DataGrid does not render.

If I comment out the DataGrid in the XAML, the project loads without error.

I am using the latest Telerik for Maui (1.0.1)

 

 

Lance | Senior Manager Technical Support
Telerik team
 answered on 17 Jun 2022
1 answer
426 views

I added my vote to the feedback page. I'm putting a note here too in case others want to vote for the implementation (i.e., sooner rather than later).

Link to feedback form: PDF Viewer (telerik.com)

Thanks.

 

 

Yana
Telerik team
 answered on 06 Jun 2022
2 answers
224 views

Hallo,

I would like to customize the icon of the "ComboBox - DropDownButton"

Is there any "DataTemplate" for "ComboBox - DropDownButton"? Or any other solution?

I understand that I can customize the style in "RadComboBox.DropDownButtonStyle", but I need the customize the icon of the button

Palmsenser
Top achievements
Rank 1
 answered on 03 Jun 2022
1 answer
216 views

So...

Maui apps can't have unit tests in a test project? Is that right? So, I have to move code I want to test into class libraries?

But Maui class libraries cannot contain Telerik code. Is that right? I can get Resharper to offer this:

but none of those options do anything. I have the Telerik Maui nuget installed in the class library.

FWIW, I am porting over a Xamarin Forms project and trying to figure out how to structure the app and what my limitations are...

 

 

Antoan
Telerik team
 answered on 02 Jun 2022
Top users last month
Mark
Top achievements
Rank 1
Yurii
Top achievements
Rank 1
Leland
Top achievements
Rank 2
Iron
Iron
Iron
Hon
Top achievements
Rank 1
Iron
Deltaohm
Top achievements
Rank 3
Bronze
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?