I'm not sure why this is doing this, but I can't access the resource from within my constructor.
XTabItem.cs
using System;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace MyStuff
{
public class XTabItem : TabItem
{
public static readonly DependencyProperty XTabItemNormalBackgroundProperty;
/// <summary>
/// Visual Property: Normal Background
/// </summary>
[Description("Determines the visibility of the close button."), Category("XTabItem Visual")]
public Brush XTabItemNormalBackground
{
get { return (Brush)GetValue(XTabItemNormalBackgroundProperty); }
set { SetValue(XTabItemNormalBackgroundProperty, value); }
}
static XTabItem()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(XTabItem), new FrameworkPropertyMetadata(typeof(XTabItem)));
XTabItemNormalBackgroundProperty = DependencyProperty.Register("XTabItemNormalBackground", typeof(Brush), typeof(XTabItem),
new UIPropertyMetadata(null));
}
public XTabItem()
{
//XTabItemNormalBackground = (Brush)this.TryFindResource("XTabItemNormalBackgroundBrush"); //THIS DOES NOT WORK??
}
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
}
}
}
Generic.xaml
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyStuff"
xmlns:con="clr-namespace:MyStuff.Converters"
>
<SolidColorBrush x:Key="XTabItemNormalBackgroundBrush" Color="BlueViolet" />
<Style TargetType="{x:Type local:XTabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:XTabItem}">
<!-- CONTENT TEMPLATE -->
<Grid SnapsToDevicePixels="True">
<Border x:Name="_Border" Background="{Binding Path=XTabItemNormalBackground, RelativeSource={RelativeSource Mode=TemplatedParent}}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1,1,1,0">
...
</Border>
</Grid>
</Style>
</ResourceDictionary>