以下のようにカスタムレンダラを使用してアンドロイド用のカスタムラジオボタンを作成しました。以下の警告が出力ウィンドウに表示されます。私は多くの方法を試して、多くのサイトを挙げましたが、この警告を修正する明確な解決策はありません。誰もがナゲットのバージョンを変更せずに提案をすることはできますか?Xamarin.Formsでバインド可能なプロパティの警告をクリアする方法
public static BindableProperty ItemsSourceProperty =
BindableProperty.Create<BindableRadioGroup, IEnumerable>
(o => o.ItemsSource, default(IEnumerable), propertyChanged: OnItemsSourceChanged);
public static BindableProperty SelectedIndexProperty =
BindableProperty.Create<BindableRadioGroup,
int>(o => o.SelectedIndex, default(int), BindingMode.TwoWay,
propertyChanged: OnSelectedIndexChanged);
public IEnumerable ItemsSource
{
get { return (IEnumerable)GetValue(ItemsSourceProperty); }
set { SetValue(ItemsSourceProperty, value); }
}
public int SelectedIndex
{
get { return (int)GetValue(SelectedIndexProperty); }
set { SetValue(SelectedIndexProperty, value); }
}
private static void OnItemsSourceChanged(BindableObject bindable, IEnumerable oldvalue, IEnumerable newvalue)
{
var radButtons = bindable as BindableRadioGroup;
radButtons.rads.Clear();
radButtons.Children.Clear();
if (newvalue != null)
{
int radIndex = 0;
foreach (var item in newvalue)
{
var rad = new CustomRadioButton();
rad.Text = item.ToString();
rad.Id = radIndex;
rad.CheckedChanged += radButtons.OnCheckedChanged;
radButtons.rads.Add(rad);
radButtons.Children.Add(rad);
radIndex++;
}
}
}
private static void OnSelectedIndexChanged(BindableObject bindable, int oldvalue, int newvalue)
{
if (newvalue == -1) return;
var bindableRadioGroup = bindable as BindableRadioGroup;
foreach (var rad in bindableRadioGroup.rads)
{
if (rad.Id == bindableRadioGroup.SelectedIndex)
{
rad.Checked = true;
}
}
}
を警告、私は次のエラーを得たことをクリアしている...のpublic static BindableProperty ItemsSourceProperty = BindableProperty.Create(がNameOf (ItemsSource)、型(CustomRadioButton)、 null、propertyChanged:OnItemsSourceChanged)); ..... 'object'に 'GetEnumetator'のパブリック定義が含まれていないため、foreach文は 'object'型の変数に対しては機能しません – Karthick
あなたの提案として変更しましたが、エラーは明確ではありません。 – Karthick
私の答えを編集しました。 – EvZ