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:
This results in the following error:
My import:
<Style TargetType="{x:Type controls:Foo}" BasedOn="{StaticResource {x:Type controls:Foo}}">
<Style TargetType="{x:Type controls:Foo}" BasedOn="{StaticResource {x:Type controls:Foo}}">
'Builder.Presentation.Controls.Foo' resource not found.
'Builder.Presentation.Controls.Foo' resource not found.
xmlns:controls="clr-namespace:Builder.Presentation.Controls"
xmlns:controls="clr-namespace:Builder.Presentation.Controls"
1 Reply
My class:
Solved, I forgot to add ExpanderStyles.xaml to MergedDictionaries in App.xaml.
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)));
}
}
}