簡體   English   中英

如何訪問在 Xamarin.Forms C# 代碼后面創建的組件?

[英]How to access components created in Xamarin.Forms C# code behind?

因此,我正在 Xamarin.Forms 中創建一個應用程序,它在單擊按鈕時創建一些組件和布局。

我的問題是之后我需要訪問這些組件,以便我可以更改某些標簽中的文本,從編輯器獲取值並在必要時稍后刪除它們...

這是創建組件的代碼段:

private void newItem()
{
    StackLayout add = new StackLayout { };
    add.StyleId = "add_" + posicio;
    elements.Children.Add(add);

    StackLayout grupInical = new StackLayout 
    {
        Orientation = StackOrientation.Horizontal 
    };
    add.Children.Add(grupInical);

    Label number = new Label 
    {
        VerticalOptions = LayoutOptions.End, 
        HorizontalOptions = LayoutOptions.StartAndExpand, 
        Text = "Element" + posicio.ToString(), 
        FontAttributes = FontAttributes.Bold, 
        Margin = new Thickness(5, 0, 0, 0) 
    };

    Button tancar = new Button 
    {
        Padding = new Thickness(5), 
        Text = "✕", 
        HorizontalOptions = LayoutOptions.End, 
        BackgroundColor = Color.Transparent, 
        WidthRequest = 30, 
        HeightRequest = 30 
    };
    number.StyleId = "number_" + posicio;
    tancar.StyleId = "tancar_" + posicio;
    tancar.Clicked += Eliminar_clicked;

    grupInical.Children.Add(number_);
    grupInical.Children.Add(tancar);

    StackLayout values = new StackLayout 
    { 
        Orientation = StackOrientation.Horizontal 
    };
    values.StyleId = "values" + posicio;
    add.Children.Add(values);

    Button elegir = new Button 
    {
        Text = "Element" 
    };
    Editor percentage = new Editor { MaxLength = 2, WidthRequest = 30 };

    Label desc = new Label 
    { 
        VerticalOptions = LayoutOptions.Center, 
        FontSize = 20, 
        FontAttributes = FontAttributes.Bold, 
        Text = "%" 
    };

    Picker picker = new Picker 
    {
        IsVisible = false 
    };
    elegir.Clicked += Elegir_Clicked;
    elegir.StyleId = "elegir_"+posicio;
    percentatge.StyleId = "percentatge_" + posicio;
    desc.StyleId = "desc_" + posicio;
    picker.StyleId = "picker_" + posicio;

    values.Children.Add(elegir);
    values.Children.Add(percentatge);
    values.Children.Add(desc);
    values.Children.Add(picker);
    posicio += 1;
    scroll.ScrollToAsync(0, elements.Height, true);
}

如您所見,我試圖通過為組件分配一個styleid值來訪問這些組件,但我無法訪問該組件。

您對如何識別這些項目有任何建議,以便我以后可以參考它們嗎?

在類級別聲明這些組件,然后您可以在項目的其他位置訪問它們。

public partial class MainPage : ContentPage
{

    Label numberLabel;
    StackLayout myAddStackLayout;

    public MainPage()
    {
        InitializeComponent();

        newItem()

        numberLabel.Text = "updateValue";

        myAddStackLayout.Children.Add(...);
    }

    public void test() {

        numberLabel.Text = "updateValue";

        myAddStackLayout.Children.Add(...);
    }

    private void newItem()
    {
        StackLayout add = new StackLayout { };
        Label number = new Label ();          
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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