void ComponentCreationTestWithOtherElements() { Component123.DefineForBuilder(); var model = new SimpleClass1 { LastName = "X", Child = new SimpleClass1 { LastName = "Y", Child = new SimpleClass1 { LastName = "Z" } } }; var stringXml = "<div>" + " <div class = '{Child.LastName}' >" + " <Component123 StringProperty0 = '{LastName}' StringProperty1 = '{Child.LastName}' StringProperty2 = '{Child.Child.LastName}'>" + " <div>" + " <div class = '{Child.Child.LastName}' />" + " </div>" + " </Component123> " + " </div>" + "</div>" ; var fe = new FrameworkElement { DataContext = model }; UIBuilder.LoadComponent(fe, stringXml); var root = fe.GetLogicalChildAt(0); var ui = (Component123)root.GetLogicalChildAt(0).GetLogicalChildAt(0); MustEqualByReference(model, ui.DataContext); MustEqual(model.LastName, ui.StringProperty0); MustEqual(model.Child.LastName, ui.StringProperty1); MustEqual(model.Child.Child.LastName, ui.StringProperty2); model.LastName = "1"; model.Child.LastName = "2"; model.Child.Child.LastName = "3"; MustEqual(model.LastName, ui.StringProperty0); MustEqual(model.Child.LastName, ui.StringProperty1); MustEqual(model.Child.Child.LastName, ui.StringProperty2); MustEqual(1, ui.LogicalChilderenCount); MustEqual("3", ui.GetLogicalChildAt(0).GetLogicalChildAt(0).Attr("class")); MustEqual(model.Child.LastName, root.GetLogicalChildAt(0).Attr("class")); }
void ComponentCreationTest() { Component123.DefineForBuilder(); var model = new SimpleClass1 { LastName = "X", Child = new SimpleClass1 { LastName = "Y", Child = new SimpleClass1 { LastName = "Z" } } }; var fe = new FrameworkElement { DataContext = model }; UIBuilder.LoadComponent(fe, "<Component123 StringProperty0 = '{LastName}' StringProperty1 = '{Child.LastName}' StringProperty2 = '{Child.Child.LastName}' />"); var ui = (Component123)fe.GetLogicalChildAt(0); MustEqualByReference(model, ui.DataContext); MustEqual(model.LastName, ui.StringProperty0); MustEqual(model.Child.LastName, ui.StringProperty1); MustEqual(model.Child.Child.LastName, ui.StringProperty2); model.LastName = "1"; model.Child.LastName = "2"; model.Child.Child.LastName = "3"; MustEqual(model.LastName, ui.StringProperty0); MustEqual(model.Child.LastName, ui.StringProperty1); MustEqual(model.Child.Child.LastName, ui.StringProperty2); }
internal static void DefineForBuilder() { var template = Template.CreateFromXml("<div class='{StringProperty0}' >" + " <div class='{StringProperty1}' />" + " <div class='{StringProperty2}' x.Name = '_propValue2' />" + " <div class='{StringProperty1}' />" + "</div>"); UIBuilder.Register("Component123", () => { var fe = new Component123(); UIBuilder.BuildControlTemplate(template, fe); if (fe._propValue2 == null) { throw new InvalidOperationException(); } return(fe); }); }