gpt4 book ai didi

c# - 一个 Button 会自动添加一个带有名称的新 Button

转载 作者:行者123 更新时间:2023-11-30 16:37:25 29 4
gpt4 key购买 nike

我是 Xamarin.forms 的新手,所以请耐心等待。

我尝试让用户有机会点击一个按钮来创建一个新的按钮,同时最初是按钮名称。

用户可以根据需要创建任意数量的按钮,并显示在 ScrollView 中。在他按下按钮后,我想要一个小弹出窗口,他可以在其中输入按钮的名称。

void Mainpage_button_addNewButton_Clicked(object sender, EventArgs e)
{
var entry = new Namenseingabe();
Button button = new Button
{
//Text = entry.Name, Here i try to get the Value from the Entry
AutomationId = id.ToString(),
};
MainPageButtonStackLayout.Children.Add(button);
mainPageButtons.Add(button);
}

这是条目中的 xaml:

<StackLayout VerticalOptions="Center" HorizontalOptions="Center">
<StackLayout Orientation="Vertical" HeightRequest="200" WidthRequest="300" BackgroundColor="White">
<Entry x:Name="EntryValue" Margin="20,20,20,10" Placeholder="Name" Completed="EntryValue_Completed"></Entry>
<Button Margin="20,0,20,0" Text="Save"></Button>
</StackLayout>
</StackLayout>
</ContentView.Content>

我只获取方法 EntryValue_Completed() 中的值,如下所示:

private void EntryValue_Completed(object sender, EventArgs e)
{
var a = ((Entry)sender).Text;
}

但是我如何才能在我需要的方法中获取值呢?也许你可以帮助我更好或更快地完成它。

最佳答案

根据你的描述,你想要一个弹出窗口来输入Button名称并保存这个Button,我建议你可以使用Rg.Plugins.Popup来做到这一点。

首先,通过Nuget包安装Rg.Plugins.Popup,然后创建弹出页面,代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<popup:PopupPage
x:Class="demo2.simplecontrol.Page8"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:popup="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup">
<ScrollView VerticalOptions="Center">
<Frame Margin="15" BackgroundColor="White">
<StackLayout
Padding="10,5"
IsClippedToBounds="True"
Spacing="3">
<Entry x:Name="entry1" />
<Button
x:Name="btn1"
Clicked="Btn1_Clicked"
Text="save" />
</StackLayout>
</Frame>
</ScrollView>

</popup:PopupPage>

public partial class Page8:PopupPage
{
public Page8 ()
{
InitializeComponent ();
}



private async void Btn1_Clicked(object sender, EventArgs e)
{
MessagingCenter.Send<Page7, string>(new Page7(), "add", entry1.Text);
await PopupNavigation.Instance.PopAllAsync();
}
}

然后使用MessagingCenter发送入口值。

<ContentPage
x:Class="demo2.simplecontrol.Page7"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
<ContentPage.Content>
<StackLayout x:Name="stacklayout1">
<Label
HorizontalOptions="CenterAndExpand"
Text="Welcome to Xamarin.Forms!"
VerticalOptions="CenterAndExpand" />

<Button
x:Name="btn1"
Clicked="Btn1_Clicked"
Text="create button" />
</StackLayout>
</ContentPage.Content>
</ContentPage>


public partial class Page7 : ContentPage
{
public Page7 ()
{
InitializeComponent ();
MessagingCenter.Subscribe<Page7, string>(this, "add", (sender, arg) =>
{
Button btn = new Button()
{
Text = (string)arg

};
stacklayout1.Children.Add(btn);
});

}


private async void Btn1_Clicked(object sender, EventArgs e)
{
await PopupNavigation.Instance.PushAsync(new Page8());
}
}

关于Rg.Plugins.Popup的使用,可以看看:https://github.com/rotorgames/Rg.Plugins.Popup/blob/master/src/Demo/Demo/Pages/LoginPopupPage.xaml.cs

关于MessagingCenter的使用,可以引用:https://learn.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/messaging-center

如果我的回复解决了您的问题,请记得将我的回复标记为已答复,谢谢。

enter image description here

关于c# - 一个 Button 会自动添加一个带有名称的新 Button,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58303935/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com