using System; using System.Collections.Generic; using HDL_ON.DAL.Server; using HDL_ON.DriverLayer; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Newtonsoft.Json.Linq; using Shared; namespace HDL_ON.UI { public partial class FunctionBaseInfoSetPage : FrameLayout { #region 控件列表 FrameLayout bodyView; /// /// 功能名称显示按钮 /// Button btnFunctionName; /// /// 功能名称编辑按钮 /// Button btnEditName; /// /// 位置信息显示按钮 /// Button btnLocationValues; /// /// 位置信息跳转编辑按钮 /// Button btnLocationInfoRight; /// /// 删除设备 /// Button delTextBtn; /// /// 下一级图标 /// Button delRightBtn; /// /// 删除设备行FrameLayout /// FrameLayout delView; #endregion #region 局部变量 Function function; /// /// 后退时,刷新之前界面的显示信息 /// Action actionRefresh; /// /// 解绑设备回调 /// public Action actionDel; #endregion public FunctionBaseInfoSetPage(Function func, Action action) { bodyView = this; function = func; actionRefresh = action; } public override void RemoveFromParent() { new System.Threading.Thread(() => { Application.RunOnMainThread(() => { actionRefresh?.Invoke(); }); }) { IsBackground = true }.Start(); base.RemoveFromParent(); } /// /// 加载界面 /// public void LoadPage(bool locationSetting = true) { bodyView.BackgroundColor = CSS_Color.BackgroundColor; new TopViewDiv(bodyView, Language.StringByID(StringId.Setting)).LoadTopView(actionRefresh); var contentView = new VerticalScrolViewLayout() { Y = Application.GetRealHeight(64), Height = Application.GetRealHeight(600), ScrollEnabled = false, }; bodyView.AddChidren(contentView); #region name view var nameView = new FrameLayout() { Height = Application.GetRealHeight(50), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(nameView); var btnNameText = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(160), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.Name, }; nameView.AddChidren(btnNameText); btnFunctionName = new Button() { X = Application.GetRealWidth(86), Width = Application.GetRealWidth(237), TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.TextFontSize, Text = function.name, }; nameView.AddChidren(btnFunctionName); btnEditName = new Button() { X = Application.GetRealWidth(333), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(28), Height = Application.GetMinRealAverage(28), UnSelectedImagePath = "Public/Edit.png", }; nameView.AddChidren(btnEditName); //nameView.AddChidren( // new Button() // { // Gravity = Gravity.CenterHorizontal, // Y = Application.GetRealHeight(49), // BackgroundColor = CSS_Color.DividingLineColor, // Width = Application.GetRealWidth(343), // Height = Application.GetRealHeight(1) // }); #endregion if (locationSetting) { #region 位置管理 var locationMagtView = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(locationMagtView); var btnLocationMagtTitle = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(160), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.LocationManagement, }; locationMagtView.AddChidren(btnLocationMagtTitle); btnLocationValues = new Button() { X = Application.GetRealWidth(86), Width = Application.GetRealWidth(237), TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.TextFontSize, Text = function.GetRoomListName(), }; locationMagtView.AddChidren(btnLocationValues); btnLocationInfoRight = new Button() { X = Application.GetRealWidth(339), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/RightIcon.png", }; locationMagtView.AddChidren(btnLocationInfoRight); locationMagtView.AddChidren( new Button() { Gravity = Gravity.CenterHorizontal, BackgroundColor = CSS_Color.DividingLineColor, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(1) }); #endregion } #region 共享 //var sharedView = new FrameLayout() //{ // Height = Application.GetRealHeight(55), // BackgroundColor = CSS_Color.MainBackgroundColor, //}; //contentView.AddChidren(sharedView); //var btnSharedText = new Button() //{ // X = Application.GetRealWidth(16), // Width = Application.GetRealWidth(160), // TextAlignment = TextAlignment.CenterLeft, // TextColor = CSS_Color.FirstLevelTitleColor, // TextSize = CSS_FontSize.SubheadingFontSize, // TextID = StringId.Shared, //}; //sharedView.AddChidren(btnSharedText); //var btnSharedRight = new Button() //{ // X = Application.GetRealWidth(339), // Gravity = Gravity.CenterVertical, // Width = Application.GetMinRealAverage(16), // Height = Application.GetMinRealAverage(16), // UnSelectedImagePath = "Public/RightIcon.png", //}; //sharedView.AddChidren(btnSharedRight); //sharedView.AddChidren( // new Button() // { // Gravity = Gravity.CenterHorizontal, // Y = Application.GetRealHeight(54), // BackgroundColor = CSS_Color.DividingLineColor, // Width = Application.GetRealWidth(343), // Height = Application.GetRealHeight(1) // }); #endregion #region 删除设备行 delView = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; if (this.function.spk == SPK.VideoDoorLock) { contentView.AddChidren(delView); } var lineBtn = new Button() { Gravity = Gravity.CenterHorizontal, BackgroundColor = CSS_Color.DividingLineColor, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(1) }; delView.AddChidren(lineBtn); delTextBtn = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(160), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.DeleteDevice, }; delView.AddChidren(delTextBtn); delRightBtn= new Button() { X = Application.GetRealWidth(339), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/RightIcon.png", }; delView.AddChidren(delRightBtn); #endregion #if stage2 #region 添加到桌面 var addToDesktopView = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(addToDesktopView); var btnAddToDesktopText = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(160), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.AddToDesktop, }; addToDesktopView.AddChidren(btnAddToDesktopText); var btnAddToDesktopRight = new Button() { X = Application.GetRealWidth(339), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/RightIcon.png", }; addToDesktopView.AddChidren(btnAddToDesktopRight); #endregion #endif if (function.spk == SPK.ElectricEnergy) { #region 能源数据 var energyView1 = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(energyView1); var btnEnergyText1 = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(160), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.RealTimeEnergyConsumption, }; energyView1.AddChidren(btnEnergyText1); double realTimePower = 0; double.TryParse(function.GetAttrState(FunctionAttributeKey.Power), out realTimePower); realTimePower /= 1000; var energyValue1 = new Button() { Width = Application.GetRealWidth(355), TextAlignment = TextAlignment.CenterRight, TextSize = CSS_FontSize.TextFontSize, TextColor = CSS_Color.PromptingColor1, Text = realTimePower + "kW", }; energyView1.AddChidren(energyValue1); energyView1.AddChidren( new Button() { Gravity = Gravity.CenterHorizontal, //Y = Application.GetRealHeight(54), BackgroundColor = CSS_Color.DividingLineColor, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(1) }); //----------------- var energyView2 = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(energyView2); var btnEnergyText2 = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(160), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.EnergyConsumptionOfThisMonth, }; energyView2.AddChidren(btnEnergyText2); var btnEnergyValue2 = new Button() { Width = Application.GetRealWidth(355), TextAlignment = TextAlignment.CenterRight, TextSize = CSS_FontSize.TextFontSize, TextColor = CSS_Color.PromptingColor1, Text = "--kW", }; energyView2.AddChidren(btnEnergyValue2); energyView2.AddChidren( new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(54), BackgroundColor = CSS_Color.DividingLineColor, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(1) }); new System.Threading.Thread(() => { var pm = new HttpServerRequest(); var data = pm.GetLastMonthHistory(function.deviceId, FunctionAttributeKey.TotalElectricity); if (data != null) { if (data.Code == StateCode.SUCCESS) { var dataPack = Newtonsoft.Json.JsonConvert.DeserializeObject(data.Data.ToString()); if (dataPack != null) { try { var dataValue = dataPack.GetValue("monthDiff").ToString(); if (!string.IsNullOrEmpty(dataValue)) { Application.RunOnMainThread(() => { btnEnergyValue2.Text = dataValue + "kW‧h"; }); } } catch { } } } } }) { IsBackground = true }.Start(); #endregion } else if (function.spk == SPK.HvacCac) { #region 露点温度 if (function.GetAttribute(FunctionAttributeKey.dew_point_temp) != null) { contentView.AddChidren(new Button { Height = Application.GetRealHeight(10), }); var row = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(row); var btnText = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(260), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.DewPointTemp, }; row.AddChidren(btnText); var btnValue = new Button() { Width = Application.GetRealWidth(355), TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.TextFontSize, Text = function.GetAttrState(FunctionAttributeKey.dew_point_temp) + "°C", }; row.AddChidren(btnValue); } #endregion #region 表面温度 if (function.GetAttribute(FunctionAttributeKey.surface_temp) != null) { contentView.AddChidren(new Button { Height = Application.GetRealHeight(10), }); var surfaceTempRow = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(surfaceTempRow); var btnSurfacaTempText = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(260), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.SurfaceTemperature, }; surfaceTempRow.AddChidren(btnSurfacaTempText); var btnSurfaceTempValue = new Button() { Width = Application.GetRealWidth(355), TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.TextFontSize, Text = function.GetAttrState(FunctionAttributeKey.surface_temp) + "°C", }; surfaceTempRow.AddChidren(btnSurfaceTempValue); } #endregion #region 温度校准 if (function.GetAttribute(FunctionAttributeKey.room_temp_cc) != null) { contentView.AddChidren(new Button { Height = Application.GetRealHeight(10), }); var tempCCrow = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(tempCCrow); var btnTempCcText = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(260), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.TemperatureCalibration, }; tempCCrow.AddChidren(btnTempCcText); var btnTempCcValue = new Button() { Width = Application.GetRealWidth(335), TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.TextFontSize, Text = function.GetAttrState(FunctionAttributeKey.room_temp_cc) + "°C", }; tempCCrow.AddChidren(btnTempCcValue); var btnRightTempCc = new Button() { X = Application.GetRealWidth(339), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/RightIcon.png", }; tempCCrow.AddChidren(btnRightTempCc); btnTempCcValue.MouseUpEventHandler = (sender, e) => { LoadEditDialog(-10, 10, Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.room_humidity_cc)), (reslut) => { btnTempCcValue.Text = reslut + "°C"; Dictionary dic = new Dictionary(); dic.Add(FunctionAttributeKey.room_temp_cc, reslut); Control.Ins.SendWriteCommand(function, dic); }); }; } #endregion #region 湿度校准 if (function.GetAttribute(FunctionAttributeKey.room_humidity_cc) != null) { contentView.AddChidren(new Button { Height = Application.GetRealHeight(10), }); var humidityCCrow = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(humidityCCrow); var btnHumidityCcText = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(260), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.HumidityCalibration, }; humidityCCrow.AddChidren(btnHumidityCcText); var btnHumidityCcValue = new Button() { Width = Application.GetRealWidth(335), TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.TextFontSize, Text = function.GetAttrState(FunctionAttributeKey.room_humidity_cc) + "%", }; humidityCCrow.AddChidren(btnHumidityCcValue); var btnRightHumidityCc = new Button() { X = Application.GetRealWidth(339), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(16), Height = Application.GetMinRealAverage(16), UnSelectedImagePath = "Public/RightIcon.png", }; humidityCCrow.AddChidren(btnRightHumidityCc); btnHumidityCcValue.MouseUpEventHandler = (sender, e) => { LoadEditDialog(-20, 20, Convert.ToInt32(function.GetAttrState(FunctionAttributeKey.room_humidity_cc)), (reslut) => { btnHumidityCcValue.Text = reslut + "%"; Dictionary dic = new Dictionary(); dic.Add(FunctionAttributeKey.room_humidity_cc, reslut); Control.Ins.SendWriteCommand(function, dic); }); }; } #endregion #region 毛细阀门 if (function.GetAttribute(FunctionAttributeKey.cac_valve) != null) { contentView.AddChidren(new Button { Height = Application.GetRealHeight(10), }); var cacValveRow = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(cacValveRow); var btnCacValveText = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(260), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.CapillaryValve, }; cacValveRow.AddChidren(btnCacValveText); var btnCacValvaValue = new Button() { Width = Application.GetRealWidth(355), TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.TextFontSize, TextID = function.GetAttrState(FunctionAttributeKey.cac_valve) == "on"? StringId.On:StringId.OFF, }; cacValveRow.AddChidren(btnCacValvaValue); } #endregion #region 地暖阀门 if (function.GetAttribute(FunctionAttributeKey.fh_valve) != null) { contentView.AddChidren(new Button { Height = Application.GetRealHeight(10), }); var fhValveRow = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(fhValveRow); var btnFhValveText = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(260), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.FloorHeatingValve, }; fhValveRow.AddChidren(btnFhValveText); var btnFhValvaValue = new Button() { Width = Application.GetRealWidth(355), TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.TextFontSize, TextID = function.GetAttrState(FunctionAttributeKey.fh_valve) == "on"? StringId.On:StringId.OFF, }; fhValveRow.AddChidren(btnFhValvaValue); } #endregion } else if(function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose) { contentView.AddChidren(new Button { Height = Application.GetRealHeight(8), }); #region 推送开关 var viewRow0 = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(viewRow0); var btnRowTitle0 = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(160), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.AlarmFunction, }; viewRow0.AddChidren(btnRowTitle0); var btnSwtichIcon0 = new Button() { X = Application.GetRealWidth(322), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(36), Height = Application.GetMinRealAverage(36), UnSelectedImagePath = "Public/Switch_2.png", SelectedImagePath = "Public/SwitchOn_2.png", }; viewRow0.AddChidren(btnSwtichIcon0); DeviceMessageRules deviceMessageRules = new DeviceMessageRules() { deviceId = function.deviceId }; btnSwtichIcon0.MouseUpEventHandler = (sender, e) => { var push = btnSwtichIcon0.IsSelected = !btnSwtichIcon0.IsSelected; new System.Threading.Thread(() => { var result = new HttpServerRequest().DeviceMessageRulesSet(function.deviceId, deviceMessageRules.conditionIdentify, push);//设置推送信息 Application.RunOnMainThread(() => { if (result != null && result.Code == StateCode.SUCCESS) { deviceMessageRules.push = push; } else { btnSwtichIcon0.IsSelected = deviceMessageRules.push; } }); }) { IsBackground = true }.Start(); }; Loading waitView = new Loading(); viewRow0.AddChidren(waitView); new System.Threading.Thread(() => { Application.RunOnMainThread(() => { waitView.Start(""); }); var result = new HttpServerRequest().GetDeviceMessageRulesSet(function.deviceId); //var result1 = new HttpServerRequest().DeviceMessageRulesSet(function.deviceId);//设置推送信息 Application.RunOnMainThread(() => { if (result != null && result.Code == StateCode.SUCCESS && result.Data != null) { var data = Newtonsoft.Json.JsonConvert.DeserializeObject>(result.Data.ToString()); if (data.Count > 0) { deviceMessageRules = data[0]; btnSwtichIcon0.IsSelected = deviceMessageRules.push; } } else { btnSwtichIcon0.IsSelected = false; } waitView.Hide(); waitView.RemoveFromParent(); }); }) { IsBackground = true }.Start(); viewRow0.AddChidren(new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(54), BackgroundColor = CSS_Color.DividingLineColor, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(1) }); #endregion #region 演示模式 var viewRow = new FrameLayout() { Height = Application.GetRealHeight(55), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(viewRow); var btnRowTitle = new Button() { X = Application.GetRealWidth(16), Width = Application.GetRealWidth(160), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.LaboratoryMode, }; viewRow.AddChidren(btnRowTitle); var btnSwtichIcon = new Button() { X = Application.GetRealWidth(322), Gravity = Gravity.CenterVertical, Width = Application.GetMinRealAverage(36), Height = Application.GetMinRealAverage(36), UnSelectedImagePath = "Public/Switch_2.png", SelectedImagePath = "Public/SwitchOn_2.png", IsSelected = function.extSet.labModel }; viewRow.AddChidren(btnSwtichIcon); btnSwtichIcon.MouseUpEventHandler = (sender, e) => { btnSwtichIcon.IsSelected = function.extSet.labModel = !btnSwtichIcon.IsSelected; new System.Threading.Thread(() => { var result = new HttpServerRequest().DeviceExtSet(function.deviceId, function.extSet); Application.RunOnMainThread(() => { if (result != null && result.Code == StateCode.SUCCESS) { if (Convert.ToBoolean( result.Data )) { function.extSet.labModel = btnSwtichIcon.IsSelected; } else { btnSwtichIcon.IsSelected = function.extSet.labModel = !btnSwtichIcon.IsSelected; } } else { btnSwtichIcon.IsSelected = function.extSet.labModel = !btnSwtichIcon.IsSelected; } }); }) { IsBackground = true }.Start(); }; #endregion } LoadEventList(); } /// /// 加载选择弹窗 /// void LoadEditDialog(int min ,int max,int curValue,Action action) { List pickerItems = new List(); Dialog dialog = new Dialog(); var pView = new FrameLayout() { BackgroundColor = CSS_Color.DialogTransparentColor1, }; dialog.AddChidren(pView); var optionBaseView = new FrameLayout() { Y = Application.GetRealHeight(456 - 60), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(260), AnimateSpeed = 0.3f, Animate = Animate.DownToUp, BackgroundColor = CSS_Color.MainBackgroundColor, Radius = (uint)Application.GetRealWidth(12), }; pView.AddChidren(optionBaseView); var topView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(40), BackgroundColor = CSS_Color.MainBackgroundColor, Radius = (uint)Application.GetRealWidth(12), }; optionBaseView.AddChidren(topView); topView.AddChidren(new Button() { Y = Application.GetRealHeight(39), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor }); var btnCancel = new Button() { X = Application.GetRealWidth(21), Width = Application.GetRealWidth(100), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.TextFontSize, TextID = StringId.Cancel, }; topView.AddChidren(btnCancel); var btnConfrim = new Button() { X = Application.GetRealWidth(160), Width = Application.GetRealWidth(160), TextAlignment = TextAlignment.CenterRight, TextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.TextFontSize, TextID = StringId.Confirm, }; topView.AddChidren(btnConfrim); UIPickerView uIPickerView = new UIPickerView() { Y = Application.GetRealHeight(40), Height = Application.GetRealHeight(210), Radius = (uint)Application.GetRealWidth(12), }; for (int i = min; i <= max; i += 1) { pickerItems.Add(i.ToString()); } uIPickerView.setNPicker(pickerItems, null, null); optionBaseView.AddChidren(uIPickerView); uIPickerView.setCurrentItems(pickerItems.IndexOf(curValue.ToString()), 4, 5); string selectItem = pickerItems[0]; if (pickerItems.Contains(curValue.ToString())) { selectItem = curValue.ToString(); } dialog.Show(); pView.MouseUpEventHandler = (sender, e) => { dialog.Close(); }; btnCancel.MouseUpEventHandler = (sender, e) => { dialog.Close(); }; uIPickerView.OnSelectChangeEvent = (int1, int2, int3) => { selectItem = pickerItems[int1]; }; btnConfrim.MouseUpEventHandler = (sender, e) => { dialog.Close(); action?.Invoke(selectItem); }; } } }