Ejemplo n.º 1
0
        public async void ShowDlg()
        {
            Lv lv = _owner.Lv;

            if (lv.Data != null && !_owner.RefreshData)
            {
                // 已设置数据源
            }
            else if (await _owner.OnLoadData())
            {
                // 外部自定义数据源
            }
            else if (!string.IsNullOrEmpty(_owner.Option))
            {
                // 基础选项
                lv.Data = AtModel.Query($"select name from OmOption where Category=\"{_owner.Option}\"");
            }
            else if (!string.IsNullOrEmpty(_owner.Sql))
            {
                // Sql查询数据
                lv.Data = await GetDataBySql(_owner.Sql);
            }
            else if (!string.IsNullOrEmpty(_owner.SqlKey))
            {
                // Sql键值查询
                lv.Data = await GetDataByKey(_owner.SqlKey, _owner.SqlKeyFilter);
            }
            else if (!string.IsNullOrEmpty(_owner.Enum))
            {
                // 枚举数据
                Type type = Type.GetType(_owner.Enum, true, true);
                lv.Data = CreateEnumData(type);
            }
            else if (((Type)_owner.ValBinding.ConverterParameter).IsEnum)
            {
                // 枚举类型
                lv.Data = CreateEnumData((Type)_owner.ValBinding.ConverterParameter);
            }
            else if (_owner.Items.Count > 0)
            {
                // xaml中定义的对象列表
                lv.Data = _owner.Items;
            }

            if (lv.View == null)
            {
                lv.ShowItemBorder = false;
                lv.View           = (lv.Data is Table) ? Application.Current.Resources["CListRowView"] : Application.Current.Resources["CListObjView"];
            }

            // 不向下层对话框传递Press事件
            AllowRelayPress = false;

            // phone模式先最大化
            if (Kit.IsPhoneUI)
            {
                ClearValue(HideTitleBarProperty);
                ClearValue(PhonePlacementProperty);
                ClearValue(HeightProperty);
            }
            Show();

            // phone模式选项内容不足半屏时在下部显示
            if (Kit.IsPhoneUI && DesiredSize.Height * 2 < SysVisual.ViewHeight)
            {
                //HideTitleBar = true;
                Top = SysVisual.ViewHeight - DesiredSize.Height;
                // uno中不可设置为固定高度!
                Height = double.NaN;
            }
        }