में कस्टम पिकर बनाने का प्रयास कर रहा हूं, मैं 3 घटकों के साथ एक कस्टम पिकर बनाने की कोशिश कर रहा हूं। मैंने Xamarin साइट here पर ट्यूटोरियल का पालन किया। मुझे काम करने के लिए नियंत्रण मिला, सिवाय जब मैं पिकर पर पूर्ण बटन क्लिक करता हूं (यह डिफ़ॉल्ट किया गया बटन है)। मुझे निम्न अपवाद मिलता है:Xamarin फॉर्म
सिस्टम। इन्वालिड कैस्ट अपवाद: 'xproarin.Forms.Platform.iOS.PickerRenderer + PickerSource' टाइप करने के लिए 'myproj.iOS.MyPickerModel' प्रकार का ऑब्जेक्ट डालने में असमर्थ।
साझा proj में:
public class MyPicker: Picker {}
आईओएस proj में:
[assembly: ExportRenderer(typeof(MyPicker), typeof(MyPickerRenderer))]
public class MyPickerRenderer: PickerRenderer
{
// Override the OnElementChanged method so we can tweak this renderer post-initial setup
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
if (Control != null)
{
var picker = (UIPickerView)this.Control.InputView;
picker.BackgroundColor = UIColor.White;
picker.Model = new MyPickerModel();
}
और मॉडल:
public class MyPickerModel : UIPickerViewModel
{
private string[] array1 = new string [] {
"1","2","3","4"
};
private string[] array2 = new string [] {
"1a","2a","3a","4a"
};
private string[] array3 = new string [] {
"a","b","c","d"
};
public override nint GetComponentCount (UIPickerView pickerView)
{
return 3;
}
public override nint GetRowsInComponent (UIPickerView pickerView, nint component)
{
// Returns
switch (component) {
case 0: return array1.Length;
case 1: return array2.Length;
case 2: return array3.Length;
default:break;
}
return 0;
}
public override string GetTitle (UIPickerView pickerView, nint row, nint component)
{
// Returns
switch (component)
{
case 0: return array1[row];
case 1: return array2[row];
case 2: return array3[row];
default: break;
}
return null;
}
public override nfloat GetComponentWidth (UIPickerView pickerView, nint component)
{
switch (component)
{
case 0: return 100.0f;
case 1: return 100.0f;
case 2: return 100.0f;
default: break;
}
return 0;
}
public override nfloat GetRowHeight (UIPickerView pickerView, nint component)
{
return 40f;
}
}
और अंत में
यहाँ मेरी कोड है मेरा पृष्ठ:
public class MyPage : ContentPage
{
public MyPage()
{
MyPicker picker = new MyPicker
{
Title = "Color",
VerticalOptions = LayoutOptions.CenterAndExpand
};
picker.SelectedIndexChanged += (sender, args) =>
{
};
var mainLayout = new StackLayout
{
Orientation = StackOrientation.Vertical,
Children =
{
picker
}
};
// Accomodate iPhone status bar.
this.Padding = new Thickness(0, Device.OnPlatform(20, 0, 0), 0, 0);
this.BackgroundImage = "background.png";
// Build the page.
this.Content = mainLayout;
}
}
मुझे समझ नहीं आता क्यों अपने PickerRenderer + PickerSource को MyPickerModel कास्ट करने के लिए
धन्यवाद की कोशिश कर रहा!