コード例 #1
0
        //-----------------------------------------------------------------------------------------------
        /// <summary>
        /// AddContent - Add or replace a vwml item in the widget space.  Use this method to add
        ///              content you might want to change dynamically
        /// </summary>
        //-----------------------------------------------------------------------------------------------
        public void AddContent(string name, Stream vwmlStream, object bindingContext)
        {
            var layout = VarmintWidget.PreloadFromVwml(vwmlStream, name);

            if (layout.VwmlTag == "Style")
            {
                var rootStyle = (VarmintWidgetStyle)VarmintWidget.HydrateLayout(_injector, layout, _controlLibrary);
                foreach (var style in rootStyle.FindWidgetsByType <VarmintWidgetStyle>())
                {
                    if (_styleLibrary.ContainsKey(style.Name))
                    {
                        Debug.WriteLine("Warning: Added duplicate style: " + style.Name);
                    }
                    _styleLibrary[style.Name] = style;
                }
            }
            else if (layout.VwmlTag == "Control")
            {
                _controlLibrary.Add(layout.Name, layout);
            }
            else
            {
                _screenLibrary.Add(layout.Name, layout);
            }
        }
コード例 #2
0
        //-----------------------------------------------------------------------------------------------
        /// <summary>
        /// GetScreen
        /// </summary>
        //-----------------------------------------------------------------------------------------------
        internal VarmintWidget GetScreen(string screenName, object bindingContext)
        {
            if (!_screensByName.ContainsKey(screenName))
            {
                if (_screenLibrary.ContainsKey(screenName))
                {
                    var screen = VarmintWidget.HydrateLayout(_injector, _screenLibrary[screenName], _controlLibrary);
                    if (bindingContext != null)
                    {
                        screen.BindingContext = bindingContext;
                    }
                    _screensByName[screen.Name] = screen;
                }
                else
                {
                    throw new ApplicationException("Unknown screen: " + screenName);
                }
            }

            var returnMe = _screensByName[screenName];

            returnMe.Prepare(_styleLibrary);
            return(returnMe);
        }