C
C#2mo ago
amphibian

Decompiling XAML problem

Hello, I am performing reverse engineering on a .NET Framework 4.5 application. Although I am not very familiar with C# or .NET itself, I have already made 70-80% progress. Now, regarding my issue, I am using tools like ILSpy and dotPeek to decompile the code. In general, I always compare the two decompiled codebases to fine-tune the results. However, I am facing issues mainly with XAML/BAML files, specifically with the following line of code:
<Style TargetType="{x:Type controls:Foo}" BasedOn="{StaticResource {x:Type controls:Foo}}">
<Style TargetType="{x:Type controls:Foo}" BasedOn="{StaticResource {x:Type controls:Foo}}">
This results in the following error:
'Builder.Presentation.Controls.Foo' resource not found.
'Builder.Presentation.Controls.Foo' resource not found.
My import:
xmlns:controls="clr-namespace:Builder.Presentation.Controls"
xmlns:controls="clr-namespace:Builder.Presentation.Controls"
1 Reply
amphibian
amphibianOP2mo ago
My class:
using System.Windows;
using System.Windows.Controls;

namespace Builder.Presentation.Controls
{
public class FooClass: Expander
{
public static readonly DependencyProperty AdditionalHeaderContentProperty;

public static readonly DependencyProperty FooterContentProperty;

public static readonly DependencyProperty FooterVisibilityProperty;

public static readonly DependencyProperty AdditionalHeaderVisibilityProperty;

public static readonly DependencyProperty AdditionalHeaderContentTemplateProperty;

public FrameworkElement AdditionalHeaderContent
{
get
{
return (FrameworkElement)GetValue(AdditionalHeaderContentProperty);
}
set
{
SetValue(AdditionalHeaderContentProperty, value);
}
}

public object FooterContent
{
get
{
return GetValue(FooterContentProperty);
}
set
{
SetValue(FooterContentProperty, value);
}
}

public Visibility FooterVisibility
{
get
{
return (Visibility)GetValue(FooterVisibilityProperty);
}
set
{
SetValue(FooterVisibilityProperty, value);
}
}

public Visibility AdditionalHeaderVisibility
{
get
{
return (Visibility)GetValue(AdditionalHeaderVisibilityProperty);
}
set
{
SetValue(AdditionalHeaderVisibilityProperty, value);
}
}

public DataTemplate AdditionalHeaderContentTemplate
{
get
{
return (DataTemplate)GetValue(AdditionalHeaderContentTemplateProperty);
}
set
{
SetValue(AdditionalHeaderContentTemplateProperty, value);
}
}

static Foo()
{
AdditionalHeaderContentProperty = DependencyProperty.Register("AdditionalHeaderContent", typeof(FrameworkElement), typeof(FooClass), new PropertyMetadata((object)null));

FooterContentProperty = DependencyProperty.Register("FooterContent", typeof(object), typeof(FooClass), new PropertyMetadata((object)null));

FooterVisibilityProperty = DependencyProperty.Register("FooterVisibility", typeof(Visibility), typeof(FooClass), new PropertyMetadata(Visibility.Collapsed));

AdditionalHeaderVisibilityProperty = DependencyProperty.Register("AdditionalHeaderVisibility", typeof(Visibility), typeof(FooClass), new PropertyMetadata(Visibility.Visible));

AdditionalHeaderContentTemplateProperty = DependencyProperty.Register("AdditionalHeaderContentTemplate", typeof(DataTemplate), typeof(FooClass), new PropertyMetadata((object)null));

FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata(typeof(FooClass
), new FrameworkPropertyMetadata(typeof(FooClass)));
}
}
}
using System.Windows;
using System.Windows.Controls;

namespace Builder.Presentation.Controls
{
public class FooClass: Expander
{
public static readonly DependencyProperty AdditionalHeaderContentProperty;

public static readonly DependencyProperty FooterContentProperty;

public static readonly DependencyProperty FooterVisibilityProperty;

public static readonly DependencyProperty AdditionalHeaderVisibilityProperty;

public static readonly DependencyProperty AdditionalHeaderContentTemplateProperty;

public FrameworkElement AdditionalHeaderContent
{
get
{
return (FrameworkElement)GetValue(AdditionalHeaderContentProperty);
}
set
{
SetValue(AdditionalHeaderContentProperty, value);
}
}

public object FooterContent
{
get
{
return GetValue(FooterContentProperty);
}
set
{
SetValue(FooterContentProperty, value);
}
}

public Visibility FooterVisibility
{
get
{
return (Visibility)GetValue(FooterVisibilityProperty);
}
set
{
SetValue(FooterVisibilityProperty, value);
}
}

public Visibility AdditionalHeaderVisibility
{
get
{
return (Visibility)GetValue(AdditionalHeaderVisibilityProperty);
}
set
{
SetValue(AdditionalHeaderVisibilityProperty, value);
}
}

public DataTemplate AdditionalHeaderContentTemplate
{
get
{
return (DataTemplate)GetValue(AdditionalHeaderContentTemplateProperty);
}
set
{
SetValue(AdditionalHeaderContentTemplateProperty, value);
}
}

static Foo()
{
AdditionalHeaderContentProperty = DependencyProperty.Register("AdditionalHeaderContent", typeof(FrameworkElement), typeof(FooClass), new PropertyMetadata((object)null));

FooterContentProperty = DependencyProperty.Register("FooterContent", typeof(object), typeof(FooClass), new PropertyMetadata((object)null));

FooterVisibilityProperty = DependencyProperty.Register("FooterVisibility", typeof(Visibility), typeof(FooClass), new PropertyMetadata(Visibility.Collapsed));

AdditionalHeaderVisibilityProperty = DependencyProperty.Register("AdditionalHeaderVisibility", typeof(Visibility), typeof(FooClass), new PropertyMetadata(Visibility.Visible));

AdditionalHeaderContentTemplateProperty = DependencyProperty.Register("AdditionalHeaderContentTemplate", typeof(DataTemplate), typeof(FooClass), new PropertyMetadata((object)null));

FrameworkElement.DefaultStyleKeyProperty.OverrideMetadata(typeof(FooClass
), new FrameworkPropertyMetadata(typeof(FooClass)));
}
}
}
Solved, I forgot to add ExpanderStyles.xaml to MergedDictionaries in App.xaml.

Did you find this page helpful?