//----------------------------------------------------------------------------------------------- /// <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); } }
//----------------------------------------------------------------------------------------------- /// <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); }