I am unable to retrieve the Value property of the RadShapeRating object in my xaml either by binding or by retrieving the value in my code behind after a button click event. Also, the ValueChanged event doesn't seem to fire. I'm also unable to look through the RadShapeRating children because the classes are protected. Here is my XAML:
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" NavigationPage.HasNavigationBar="false" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="Pages.AppointmentRatingPage" Title="Appointment Rating" xmlns:helpers="clr-namespace:Helpers;assembly=AssistForms" BackgroundImage="introbackground.png" xmlns:local="clr-namespace:AssistForms;assembly=AssistForms" xmlns:rating="clr-namespace:Telerik.XamarinForms.Input;assembly=Telerik.XamarinForms.Input" xmlns:userControls="clr-namespace:CustomControlls;assembly=AssistForms">
<ContentPage.Resources>
<ResourceDictionary>
</ResourceDictionary>
</ContentPage.Resources>
<ContentPage.Content>
<StackLayout Padding="30,100,30,70" HorizontalOptions="Center" VerticalOptions="Center">
<Frame Padding="3" BackgroundColor="Gray">
<StackLayout BackgroundColor="#D3D3D3">
<Image Source="mobilefit" Aspect="AspectFit" HeightRequest="35" HorizontalOptions="Start" Margin="5,5,0,0">
</Image>
<Grid>
<Image Source="introbackground.png" Aspect="AspectFill" />
<StackLayout VerticalOptions="FillAndExpand" Spacing="10" Padding="5,10,5,5">
<Label HorizontalTextAlignment="Center" FontSize="Large" VerticalOptions="Start">Rate your experience at the Y!</Label>
<Label HorizontalTextAlignment="Center" FontSize="15" TextColor="White" Text="{Binding Message}"/>
<Frame Margin="20,0,20,0">
<StackLayout Padding="20,20,20,50" HorizontalOptions="Center" VerticalOptions="Center" BackgroundColor="White" Spacing="30">
<Label HorizontalOptions="Center" TextColor="#1E90FF" FontSize="18">Choose Your Rating</Label>
<rating:RadShapeRating x:Name="rating" HorizontalOptions="Center" Value="{Binding RatingValue, Mode=TwoWay}" ValueChanged="Handle_ValueChanged" ></rating:RadShapeRating>
</StackLayout>
</Frame>
<StackLayout>
<Button Text="Don't Ask Again" TextColor="White" />
<StackLayout Orientation="Horizontal" VerticalOptions="Start">
<Button Text="Cancel" HorizontalOptions="CenterAndExpand" TextColor="White" Command="{Binding CancelCommand}">
</Button>
<Button Text="Send" HorizontalOptions="CenterAndExpand" TextColor="White" FontAttributes="Bold" Clicked="Handle_Clicked">
</Button>
</StackLayout>
</StackLayout>
</StackLayout>
</Grid>
</StackLayout>
</Frame>
</StackLayout>
</ContentPage.Content>
</ContentPage>
Here is my code behind:
using System;
using Xamarin.Forms;
using ViewModels;
using AssistForms;
namespace Pages
{
public partial class AppointmentRatingPage : ContentPage
{
void Handle_ValueChanged(object sender, Xamarin.Forms.ValueChangedEventArgs e)
{
throw new NotImplementedException();
}
void Handle_Clicked(object sender, System.EventArgs e)
{
foreach (var child in rating.Children)
{
var childChild = child.BackgroundColor;
//Telerik.XamarinForms.Input.RatingItem childRating = rating as Telerik.XamarinForms.Input.RatingItem;
// var backgroundCole = child.
//RatingItem ratingItem = child as RatingItem;
}
}
public string NavigationPageName { get; set; }
public AppointmentRatingViewModel ViewModel
{
get;
set;
}
public AppointmentRatingPage(AppointmentRating appointmentRating)
{
InitializeComponent();
NavigationPage.SetHasNavigationBar(this, false);
App.MasterDetailPageProperty.IsGestureEnabled = false;
NavigationPageName = "AppointmentRating";
ViewModel = new AppointmentRatingViewModel(appointmentRating);
BindingContext = ViewModel;
}
protected override void OnAppearing()
{
base.OnAppearing();
}
}
}