using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace PdmSwPlugin.Common.Control.TreeGrid { public class TreeItemContentControl : ContentControl { static TreeItemContentControl() { DefaultStyleKeyProperty.OverrideMetadata(typeof(TreeItemContentControl), new FrameworkPropertyMetadata(typeof(TreeItemContentControl))); } public TreeItemContentControl() { this.Loaded += TreeItemContentControl_Loaded; } private void TreeItemContentControl_Loaded(object sender, RoutedEventArgs e) { Loaded -= TreeItemContentControl_Loaded; var p = VisualTreeHelper.GetParent(this); if (p != null && p is FrameworkElement f) { f.Margin = new Thickness(0); if(p is ContentPresenter cp) { } } } #region TreeData DependencyProperty public TreeItemData TreeData { get { return (TreeItemData)GetValue(TreeDataProperty); } set { SetValue(TreeDataProperty, value); } } public static readonly DependencyProperty TreeDataProperty = DependencyProperty.Register("TreeData", typeof(TreeItemData), typeof(TreeItemContentControl), new PropertyMetadata(null, new PropertyChangedCallback(TreeItemContentControl.OnTreeDataPropertyChanged))); private static void OnTreeDataPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) { if (obj is TreeItemContentControl) { (obj as TreeItemContentControl).OnTreeDataValueChanged(); } } protected void OnTreeDataValueChanged() { } #endregion #region LevelIndentSize DependencyProperty public int LevelIndentSize { get { return (int)GetValue(LevelIndentSizeProperty); } set { SetValue(LevelIndentSizeProperty, value); } } public static readonly DependencyProperty LevelIndentSizeProperty = DependencyProperty.Register("LevelIndentSize", typeof(int), typeof(TreeItemContentControl), new PropertyMetadata(30, new PropertyChangedCallback(TreeItemContentControl.OnLevelIndentSizePropertyChanged))); private static void OnLevelIndentSizePropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) { if (obj is TreeItemContentControl) { (obj as TreeItemContentControl).OnLevelIndentSizeValueChanged(); } } protected void OnLevelIndentSizeValueChanged() { } #endregion #region IconLineStroke DependencyProperty public Brush IconLineStroke { get { return (Brush)GetValue(IconLineStrokeProperty); } set { SetValue(IconLineStrokeProperty, value); } } public static readonly DependencyProperty IconLineStrokeProperty = DependencyProperty.Register("IconLineStroke", typeof(Brush), typeof(TreeItemContentControl), new PropertyMetadata(new SolidColorBrush(Colors.Blue), new PropertyChangedCallback(TreeItemContentControl.OnIconLineStrokePropertyChanged))); private static void OnIconLineStrokePropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e) { if (obj is TreeItemContentControl) { (obj as TreeItemContentControl).OnIconLineStrokeValueChanged(); } } protected void OnIconLineStrokeValueChanged() { } #endregion } }