Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit c7f70a1

Browse files
author
gumme
committed
String can now be added to collections, for example a ResourceDictionary.
1 parent b5b1573 commit c7f70a1

2 files changed

Lines changed: 29 additions & 0 deletions

File tree

src/AddIns/DisplayBindings/WpfDesign/WpfDesign.Designer/Tests/Designer/ModelTests.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,33 @@ public void AddBrushAsResource()
398398
AssertCanvasDesignerOutput(expectedXaml, checkBox.Context);
399399
AssertLog("");
400400
}
401+
402+
[Test]
403+
public void AddStringAsResource()
404+
{
405+
DesignItem textBlock = CreateCanvasContext("<TextBlock/>");
406+
DesignItem canvas = textBlock.Parent;
407+
408+
DesignItemProperty canvasResources = canvas.Properties.GetProperty("Resources");
409+
410+
DesignItem str = canvas.Services.Component.RegisterComponentForDesigner("stringresource 1");
411+
str.Key = "str1";
412+
413+
Assert.IsTrue(canvasResources.IsCollection);
414+
canvasResources.CollectionElements.Add(str);
415+
416+
textBlock.Properties[TextBlock.TextProperty].SetValue(new StaticResourceExtension());
417+
DesignItemProperty prop = textBlock.Properties[TextBlock.TextProperty];
418+
prop.Value.Properties["ResourceKey"].SetValue("str1");
419+
420+
string expectedXaml = "<Canvas.Resources>\n" +
421+
" <Controls0:String x:Key=\"str1\">stringresource 1</Controls0:String>\n" +
422+
"</Canvas.Resources>\n" +
423+
"<TextBlock Text=\"{StaticResource ResourceKey=str1}\" />";
424+
425+
AssertCanvasDesignerOutput(expectedXaml, textBlock.Context, "xmlns:Controls0=\"clr-namespace:System;assembly=mscorlib\"");
426+
AssertLog("");
427+
}
401428
}
402429

403430
public class MyMultiConverter : IMultiValueConverter

src/AddIns/DisplayBindings/WpfDesign/WpfDesign.XamlDom/Project/XamlDocument.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,8 @@ public XamlPropertyValue CreatePropertyValue(object instance, XamlProperty forPr
199199
}
200200
}
201201
}
202+
} else if (instance is string) {
203+
xml.InnerText = (string)instance;
202204
}
203205

204206
return new XamlObject(this, xml, elementType, instance);

0 commit comments

Comments
 (0)