1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| [TemplatePart(Name = "HeaderText", Type = typeof(TextBlock))]
[TemplatePart(Name = "MainContent", Type = typeof(Grid))]
public partial class TestHeaderedPresenter : Control
{
public TestHeaderedPresenter() : base()
{
this.DefaultStyleKey = typeof(TestHeaderedPresenter);
}
public string HeaderText
{
get { return GetValue(HeaderTextProperty).ToString(); }
set { SetValue(HeaderTextProperty, value); }
}
public static DependencyProperty HeaderTextProperty = DependencyProperty.Register(
"HeaderText",
typeof(string),
typeof(TestHeaderedPresenter),
new PropertyMetadata(
new PropertyChangedCallback(OnHeaderTextPropertyChanged)
)
);
public Grid MainContent
{
get { return (Grid)GetValue(MainContentProperty); }
set { SetValue(MainContentProperty, value); }
}
public static DependencyProperty MainContentProperty = DependencyProperty.Register(
"MainContent",
typeof(Grid),
typeof(TestHeaderedPresenter),
new PropertyMetadata(
new PropertyChangedCallback(OnMainContentPropertyChanged)
)
);
private TextBlock txt_Header;
private TextBlock TXT_Header
{
get { return txt_Header; }
set
{
txt_Header = value;
if (txt_Header != null)
{
txt_Header.Text = HeaderText;
txt_Header.IsHitTestVisible = true;
}
}
}
public override void OnApplyTemplate()
{
this.TXT_Header = GetTemplateChild("TXT_Header") as TextBlock;
this.MainContent = GetTemplateChild("MainContent") as Grid;
Debug.Assert(this.MainContent != null, "Grid MainContent is null");
Debug.Assert(this.TXT_Header != null, "Textblock TXT_Header is null");
base.OnApplyTemplate();
}
public static void OnMainContentPropertyChanged(DependencyObject dpObj,
DependencyPropertyChangedEventArgs e)
{
TestHeaderedPresenter ctrl = (dpObj as TestHeaderedPresenter);
if ((ctrl != null) && (ctrl.TXT_Header != null))
{
ctrl.MainContent = (e.NewValue as Grid);
}
}
public static void OnHeaderTextPropertyChanged(DependencyObject dpObj,
DependencyPropertyChangedEventArgs e)
{
TestHeaderedPresenter ctrl = (dpObj as TestHeaderedPresenter);
if ((ctrl != null)&&(ctrl.TXT_Header != null))
{
ctrl.TXT_Header.Text = e.NewValue.ToString();
}
}
} |
Partager