![](/img/trans.png)
[英]Call Anonymous binded delegate method of radiobutton CheckedChanged
[英]Is there a way to set the Xamarin radiobutton CheckedChanged method in c#?
進行基本概念驗證,嘗試使用數據庫中的信息構建整個視圖。 根據我目前的情況:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="FieldDataTemplateSelectorSample.DynamicView">
<ContentPage.Content>
<StackLayout>
<StackLayout Spacing="2" x:Name="EntryFieldsStack">
<!-- empty in xaml because we add details in code behind -->
</StackLayout>
<Label Text="nothing selected" x:Name="SelectedLabelName" />
</StackLayout>
</ContentPage.Content>
</ContentPage>
and the code behind so far:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
using FieldDataTemplateSelectorSample.Validations;
namespace FieldDataTemplateSelectorSample
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class DynamicView : ContentPage
{
public DynamicView()
{
InitializeComponent();
LoadDynamicFields();
}
public void OnRadioChanged(object sender, CheckedChangedEventArgs e)
{
SelectedLabelName.Text = String.Format("Selected value is {0}", e.Value);
}
public void LoadDynamicFields()
{
EntryFieldsStack.Children.Clear();
EntryFieldsStack.Children.Add(new Label { Text = "Dynamic Radio"});
for (int i = 0; i < 10; i++)
{
EntryFieldsStack.Children.Add(new RadioButton
{
Value = i.ToString(),
Content = string.Format("Radio text {0}", i.ToString()),
GroupName = "RadioGroup1"
});
}
}
}
}
因此,現在硬編碼添加一個有 10 個選項的單選按鈕。 我希望能夠為在 c# 中添加的每個 RadioButton 設置 CheckedChanged 方法名稱到 OnRadioChanged 方法,但該屬性未顯示在列表中。 或者我需要對 INotifyPropertyChanged 做些什么嗎? 對於這個例子,我只想用選定的值更新標簽,但最終我想引發 PropertyChanged 事件,所以如果有其他字段需要更新,他們可以監聽它。
我還假設一旦我弄清楚如何設置方法,就會包含 GroupName,所以如果我像這樣添加了多個無線電組,我可以區分它們嗎? 如果沒有,我該如何添加它? 我嘗試添加嵌套的 StackLayout,但無法設置 GroupName 屬性。
謝謝
您不能使用為屬性執行的內聯語法分配事件處理程序
嘗試這個
var radio = new RadioButton
{
Value = i.ToString(),
Content = string.Format("Radio text {0}", i.ToString()),
GroupName = "RadioGroup1"
};
radio.CheckedChanged += OnRadioChanged;
EntryFieldsStack.Children.Add(radio);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.