Browse Source

reactivate code that turns complex properties into markup extensions if possible

pull/252/head
Siegfried Pammer 15 years ago
parent
commit
72a1b71f82
  1. 52
      ILSpy.BamlDecompiler/Ricciolo.StylesExplorer.MarkupReflection/XmlBamlReader.cs
  2. 14
      ILSpy.BamlDecompiler/Tests/Cases/AvalonDockCommon.xaml

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

@ -870,8 +870,7 @@ namespace Ricciolo.StylesExplorer.MarkupReflection
short extensionIdentifier = (short)-(x & 0xfff); short extensionIdentifier = (short)-(x & 0xfff);
string value = String.Empty; string value = String.Empty;
switch (x) switch (x) {
{
case 0x25a: case 0x25a:
// StaticExtension // StaticExtension
object resource = this.GetResourceName(valueIdentifier); object resource = this.GetResourceName(valueIdentifier);
@ -1093,30 +1092,27 @@ namespace Ricciolo.StylesExplorer.MarkupReflection
CloseElement(); CloseElement();
complexPropertyOpened--; complexPropertyOpened--;
// // Valuto se contiene tutte extension // this property could be a markup extension
// int start = nodes.IndexOf(propertyElement) + 1; // try to convert it
// IEnumerator enumerator = nodes.GetEnumerator(); int start = nodes.IndexOf(propertyElement) + 1;
// IEnumerator enumerator = nodes.GetEnumerator();
// int c = 0;
// while (c < start && enumerator.MoveNext()) // move enumerator to the start of this property value
// c++; for (int i = 0; i < start && enumerator.MoveNext(); i++) ;
//
// if (IsExtension(enumerator)) if (IsExtension(enumerator)) {
// { start--;
// start--; nodes.RemoveAt(start);
// nodes.RemoveAt(start); nodes.RemoveLast();
// nodes.RemoveLast();
// StringBuilder sb = new StringBuilder();
// StringBuilder sb = new StringBuilder(); FormatElementExtension((XmlBamlElement) nodes[start], sb);
// FormatElementExtension((XmlBamlElement) nodes[start], sb);
// XmlBamlProperty property =
// XmlBamlProperty property = new XmlBamlProperty(elements.Peek(), PropertyType.Complex, propertyElement.PropertyDeclaration);
// new XmlBamlProperty(PropertyType.Complex, propertyElement.PropertyDeclaration); property.Value = sb.ToString();
// property.Value = sb.ToString(); nodes.Add(property);
// nodes.Add(property); }
//
// return;
// }
} }
void FormatElementExtension(XmlBamlElement element, StringBuilder sb) void FormatElementExtension(XmlBamlElement element, StringBuilder sb)
@ -1535,8 +1531,8 @@ namespace Ricciolo.StylesExplorer.MarkupReflection
if (identifier < LastKey.StaticResources.Count) if (identifier < LastKey.StaticResources.Count)
return LastKey.StaticResources[(int)identifier]; return LastKey.StaticResources[(int)identifier];
return "???" + identifier +"???"; // return "???" + identifier +"???";
// throw new ArgumentException("Cannot find StaticResource", "identifier"); throw new ArgumentException("Cannot find StaticResource", "identifier");
} }
void ReadTextWithConverter() void ReadTextWithConverter()

14
ILSpy.BamlDecompiler/Tests/Cases/AvalonDockCommon.xaml

@ -17,11 +17,11 @@
<MenuItem Command="ad:DocumentContentCommands.TabbedDocument" /> <MenuItem Command="ad:DocumentContentCommands.TabbedDocument" />
</ContextMenu> </ContextMenu>
<Style x:Key="{x:Type ad:Resizer}" TargetType="{x:Type ad:Resizer}"> <Style x:Key="{x:Type ad:Resizer}" TargetType="{x:Type ad:Resizer}">
<Setter Property="Background" Value="Transparent" /> <Setter Property="Background" Value="#00FFFFFF" />
<Setter Property="Template"> <Setter Property="Template">
<Setter.Value> <Setter.Value>
<ControlTemplate TargetType="{x:Type ad:Resizer}"> <ControlTemplate TargetType="{x:Type ad:Resizer}">
<Border Background="{TemplateBinding Background}" /> <Border Background="{TemplateBinding Control.Background}" />
</ControlTemplate> </ControlTemplate>
</Setter.Value> </Setter.Value>
</Setter> </Setter>
@ -30,14 +30,14 @@
<Setter Property="Template"> <Setter Property="Template">
<Setter.Value> <Setter.Value>
<ControlTemplate TargetType="{x:Type Button}"> <ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="PaneHeaderCommandIntBorder" Background="Transparent" BorderThickness="1" Margin="0" Opacity="0.8"> <Border Name="PaneHeaderCommandIntBorder" Background="#00FFFFFF" BorderThickness="1" Margin="0" Opacity="0.8">
<ContentPresenter /> <ContentPresenter />
</Border> </Border>
<ControlTemplate.Triggers> <ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True"> <Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" TargetName="PaneHeaderCommandIntBorder" Value="{DynamicResource {ComponentResourceKey {x:Type ad:DockingManager}, {x:Static ad:AvalonDockBrushes.PaneHeaderCommandBorderBrush}}}" /> <Setter TargetName="PaneHeaderCommandIntBorder" Value="{DynamicResource {ComponentResourceKey {x:Type ad:DockingManager}, {x:Static ad:AvalonDockBrushes.PaneHeaderCommandBorderBrush}}}" Property="BorderBrush" />
<Setter Property="Background" TargetName="PaneHeaderCommandIntBorder" Value="{DynamicResource {ComponentResourceKey {x:Type ad:DockingManager}, {x:Static ad:AvalonDockBrushes.PaneHeaderCommandBackground}}}" /> <Setter TargetName="PaneHeaderCommandIntBorder" Value="{DynamicResource {ComponentResourceKey {x:Type ad:DockingManager}, {x:Static ad:AvalonDockBrushes.PaneHeaderCommandBackground}}}" Property="Background" />
<Setter Property="Opacity" TargetName="PaneHeaderCommandIntBorder" Value="1" /> <Setter TargetName="PaneHeaderCommandIntBorder" Property="Opacity" Value="1" />
</Trigger> </Trigger>
</ControlTemplate.Triggers> </ControlTemplate.Triggers>
</ControlTemplate> </ControlTemplate>
@ -45,7 +45,7 @@
</Setter> </Setter>
</Style> </Style>
<Style x:Key="PaneHeaderContextMenuCommandStyle" TargetType="{x:Type Border}"> <Style x:Key="PaneHeaderContextMenuCommandStyle" TargetType="{x:Type Border}">
<Setter Property="Background" Value="Transparent" /> <Setter Property="Background" Value="#00FFFFFF" />
<Setter Property="BorderThickness" Value="1" /> <Setter Property="BorderThickness" Value="1" />
<Style.Triggers> <Style.Triggers>
<Trigger Property="IsMouseOver" Value="True"> <Trigger Property="IsMouseOver" Value="True">

Loading…
Cancel
Save