Browse Source

Merge pull request #402 from vwoodzell/master

Fix baml property formatting bug
pull/368/merge
Siegfried Oleg Pammer 12 years ago
parent
commit
dbf4e3b161
  1. 44
      ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlReader.cs
  2. 6
      ILSpy.BamlDecompiler/Tests/Cases/SimplePropertyElement.xaml
  3. 1
      ILSpy.BamlDecompiler/Tests/ILSpy.BamlDecompiler.Tests.csproj
  4. 6
      ILSpy.BamlDecompiler/Tests/TestRunner.cs

44
ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlReader.cs

@ -908,11 +908,7 @@ namespace Ricciolo.StylesExplorer.MarkupReflection @@ -908,11 +908,7 @@ namespace Ricciolo.StylesExplorer.MarkupReflection
short identifier = reader.ReadInt16();
string text = reader.ReadString();
PropertyDeclaration pd = this.GetPropertyDeclaration(identifier);
XmlBamlProperty property = new XmlBamlProperty(elements.Peek(), PropertyType.Value, pd);
property.Value = text;
nodes.Enqueue(property);
EnqueueProperty(identifier, text);
}
void ReadPropertyWithConverter()
@ -921,11 +917,41 @@ namespace Ricciolo.StylesExplorer.MarkupReflection @@ -921,11 +917,41 @@ namespace Ricciolo.StylesExplorer.MarkupReflection
string text = reader.ReadString();
reader.ReadInt16();
EnqueueProperty(identifier, text);
}
bool HaveSeenNestedElement()
{
XmlBamlElement element = elements.Peek();
int elementIndex = nodes.IndexOf(element);
for (int i = elementIndex + 1; i < nodes.Count; i++)
{
if (nodes[i] is XmlBamlEndElement)
return true;
}
return false;
}
void EnqueueProperty(short identifier, string text)
{
PropertyDeclaration pd = this.GetPropertyDeclaration(identifier);
XmlBamlProperty property = new XmlBamlProperty(elements.Peek(), PropertyType.Value, pd);
property.Value = text;
nodes.Enqueue(property);
XmlBamlElement element = FindXmlBamlElement();
// if we've already read a nested element for the current element, this property must be a nested element as well
if (HaveSeenNestedElement())
{
XmlBamlPropertyElement property = new XmlBamlPropertyElement(element, PropertyType.Complex, pd);
nodes.Enqueue(property);
nodes.Enqueue(new XmlBamlText(text));
nodes.Enqueue(new XmlBamlEndElement(property));
}
else
{
XmlBamlProperty property = new XmlBamlProperty(element, PropertyType.Value, pd);
property.Value = text;
nodes.Enqueue(property);
}
}
void ReadAttributeInfo()

6
ILSpy.BamlDecompiler/Tests/Cases/SimplePropertyElement.xaml

@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
<Label xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Label.Style>
<Style />
</Label.Style>
<Label.Content>Blah</Label.Content>
</Label>

1
ILSpy.BamlDecompiler/Tests/ILSpy.BamlDecompiler.Tests.csproj

@ -133,6 +133,7 @@ @@ -133,6 +133,7 @@
</Page>
<Page Include="Cases\SimpleDictionary.xaml" />
<Page Include="Cases\SimpleNames.xaml" />
<Page Include="Cases\SimplePropertyElement.xaml" />
<Page Include="Cases\Dictionary1.xaml" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />

6
ILSpy.BamlDecompiler/Tests/TestRunner.cs

@ -73,6 +73,12 @@ namespace ILSpy.BamlDecompiler.Tests @@ -73,6 +73,12 @@ namespace ILSpy.BamlDecompiler.Tests
RunTest("cases/markupextension");
}
[Test]
public void SimplePropertyElement()
{
RunTest("cases/simplepropertyelement");
}
#region RunTest
void RunTest(string name)
{

Loading…
Cancel
Save