Esempio n. 1
0
        public void ЗагрузитьМеню()
        {
            System.Threading.Tasks.Task.Factory.StartNew(() =>
            {
                for (int i = 0; i < 3; i++)
                {
                    try
                    {
                        using (RosService.Client client = new RosService.Client())
                        {
                            if (client.СведенияПользователя.ГруппаРаздел == 0)
                            {
                                throw new Exception("Интерфейс пользователя не задан в настройках");
                            }

                            var xamlLoaded = client.Архив.ПолучитьЗначение <string>(client.СведенияПользователя.ГруппаРаздел, "ИнтерфейсКод", Хранилище.Оперативное);
                            if (string.IsNullOrEmpty(xamlLoaded))
                            {
                                var query = new RosService.Data.Query();
                                query.ДобавитьУсловиеПоиска("НазваниеОбъекта", "БыстроеМеню", Query.Оператор.авно);
                                query.ДобавитьМестоПоиска(client.СведенияПользователя.ГруппаРаздел, 1);
                                var БыстроеМеню = client.Архив.Поиск(query, Хранилище.Оперативное).AsEnumerable().SingleOrDefault();
                                xamlLoaded      = client.Архив.ПолучитьЗначение <string>(БыстроеМеню.Field <decimal>("id_node"), "XamlКод", Хранилище.Оперативное);
                            }

                            if (string.IsNullOrEmpty(xamlLoaded))
                            {
                                return;
                            }

                            this.Dispatcher.Invoke(DispatcherPriority.Loaded, (Action <string>) delegate(string xaml)
                            {
                                try
                                {
                                    //var menu = System.Windows.Markup.XamlReader.Load(new System.Xml.XmlTextReader(new System.IO.StringReader(xaml))) as FrameworkElement;
                                    //if (menu is System.Windows.Controls.TabControl)
                                    if (xaml.StartsWith("<TabControl"))
                                    {
                                        //var tab = menu as System.Windows.Controls.TabControl;
                                        var oRow = PART_DocumentsHost.Items.Count - 1;
                                        foreach (var item in System.Xml.Linq.XDocument.Parse(xaml).Root.Elements())
                                        {
                                            var tag = item.Attribute("Tag").Value;
                                            if ("@@Главная".Equals(tag))
                                            {
                                                //ПользовательскоеМеню = RosControl.Helper.CloneElement<DependencyObject>(item.Content as DependencyObject);
                                                ПользовательскоеМеню = XamlReader.Parse(item.FirstNode.ToString()) as FrameworkElement;
                                            }
                                            else
                                            {
                                                var __Icon  = null as object;
                                                var strIcon = TryGetValue(item, "Icon");
                                                if (!string.IsNullOrEmpty(strIcon))
                                                {
                                                    __Icon = new FilePreview()
                                                    {
                                                        Mode = FilePreviewMode.Icon, id_node = strIcon
                                                    }
                                                }
                                                ;

                                                PART_DocumentsHost.Items.Insert(oRow++, new DocumentsTabItem()
                                                {
                                                    Header     = TryGetValue(item, "Header"),
                                                    Tag        = tag,
                                                    IsReadOnly = true,
                                                    Icon       = __Icon,
                                                    MinWidth   = 0,
                                                    ToolTip    = TryGetValue(item, "ToolTip"),
                                                    Navigation = XamlReader.Parse(item.FirstNode.ToString()) as FrameworkElement
                                                });
                                            }
                                        }
                                    }
                                    else
                                    {
                                        ПользовательскоеМеню = XamlReader.Parse(xaml) as FrameworkElement;
                                    }
                                    ЗагрузитьВкладки();
                                }
                                catch (Exception ex)
                                {
                                    ПользовательскоеМеню = new TextBlock()
                                    {
                                        Margin        = new Thickness(10),
                                        TextWrapping  = TextWrapping.Wrap,
                                        TextAlignment = TextAlignment.Center,
                                        Text          = ex.Message
                                    };
                                }
                            }, xamlLoaded);
                            break;
                        }
                    }
                    catch (TimeoutException)
                    {
                        System.Threading.Thread.Sleep(1000);
                        continue;
                    }
                    catch (Exception ex)
                    {
                        this.Dispatcher.BeginInvoke(DispatcherPriority.ContextIdle, (Action) delegate
                        {
                            ПользовательскоеМеню = new TextBlock()
                            {
                                Margin        = new Thickness(10),
                                TextWrapping  = TextWrapping.Wrap,
                                TextAlignment = TextAlignment.Center,
                                Text          = ex.Message
                            };
                        });
                    }
                }
            });
        }
Esempio n. 2
0
 public TableValue Search(RosService.Data.Query query)
 {
     return(CurrentPool.GetClient().Channel.Поиск(query, Хранилище.Оперативное, Db));
 }