簡體   English   中英

有沒有辦法在 c# 中設置 Xamarin 單選按鈕 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM