xamarin.forms - 对话框 xamarin 中的单选按钮组
问题描述
如何在 xamarin 表单中添加弹出窗口或对话框,如单选按钮组选择。我正在使用android和java。
单击时应打开并进行选择。
解决方案
我写了一个关于它的演示。使用Rg.Plugins.Popup
and MessagingCenter
(传输数据)来实现它。
这里正在运行 GIF。
如果我们想使用Rg.Plugins.Popup
and ,我们应该在方法RadioButton
中添加以下代码。OnCreate
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
Rg.Plugins.Popup.Popup.Init(this, savedInstanceState);
Forms.SetFlags("RadioButton_Experimental");
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
}
这是MainPage.xaml
<StackLayout>
<!-- Place new controls here -->
<Label x:Name="myLabel"
HorizontalOptions="Center"
VerticalOptions="CenterAndExpand" />
<Button Text="play" Clicked="Button_Clicked"></Button>
</StackLayout>
这是MainPage.xaml.cs
,我曾经MessagingCenter.Subscribe
从弹出页面接收数据。
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
MessagingCenter.Subscribe<App, string>(App.Current, "OpenPage", (snd, arg) =>
{
myLabel.Text = arg;
});
}
private async void Button_Clicked(object sender, EventArgs e)
{
await Navigation.PushPopupAsync(new Page1());
}
这是弹出页面,Page1.xaml
<?xml version="1.0" encoding="utf-8" ?>
<pages:PopupPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:pages="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup"
xmlns:animations="clr-namespace:Rg.Plugins.Popup.Animations;assembly=Rg.Plugins.Popup"
mc:Ignorable="d"
x:Class="MinitorMediaManager.Page1">
<pages:PopupPage.Animation>
<animations:ScaleAnimation
PositionIn="Center"
PositionOut="Center"
ScaleIn="1.2"
ScaleOut="0.8"
DurationIn="400"
DurationOut="300"
EasingIn="SinOut"
EasingOut="SinIn"
HasBackgroundAnimation="True"/>
</pages:PopupPage.Animation>
<!--You can use any elements here which are extended from Xamarin.Forms.View-->
<Frame VerticalOptions="Center"
HorizontalOptions="Center" >
<StackLayout
Padding="20, 20, 20, 20">
<Label Text="What's your favorite animal?" />
<RadioButton Text="Cat" x:Name="IsCat" CheckedChanged="IsCat_CheckedChanged" />
<RadioButton Text="Dog" x:Name="IsDog" CheckedChanged="IsDog_CheckedChanged"/>
<Button Text="Ok" Clicked="Button_Clicked"></Button>
</StackLayout>
</Frame>
</pages:PopupPage>
这是弹出页面的背景代码,Page1.xaml.cs
我曾经MessagingCenter.Send
将数据从弹出页面发送到主页面。
public partial class Page1 : Rg.Plugins.Popup.Pages.PopupPage
{
bool IsCatSelect;
bool IsDogSelect;
public Page1()
{
InitializeComponent();
}
private void IsCat_CheckedChanged(object sender, CheckedChangedEventArgs e)
{
IsCatSelect = e.Value;
}
private void IsDog_CheckedChanged(object sender, CheckedChangedEventArgs e)
{
IsDogSelect = e.Value;
}
private async void Button_Clicked(object sender, EventArgs e)
{
MessagingCenter.Send<App, string>(App.Current as App, "OpenPage", "IsCatSelect: " + IsCatSelect.ToString()+ " IsCatSelect: "+IsDogSelect.ToString());
await Navigation.PopPopupAsync();
}
}
推荐阅读
- java - 无法将数据从活动 C 通过活动 B 移动到活动 A
- apache - Apache 无法运行:另一个 Web 服务器使用 Web 端口或端口被防火墙阻止
- ruby-on-rails - Ruby on Rails | 如何将新行插入具有三个外键的数据库表中
- python - 一个令人困惑的功能,不做它所说的事情
- java - InjectMocks 对象在单元测试中为空
- node.js - 如何通过猫鼬中的引用对象属性检索对象
- python - 当十字准线命令成功时,我的合同是否被证明是正确的?
- cloud - 互联网上的私有云服务器作为 MQTT 代理
- python - 我如何能够从列表中获取平均值并将其与总数一起打印为输出?
- python - wtforms SelectField 总是返回 None