//... protected virtual void Bind(TreeViewColumn column, ColumnDefinition definition) { definition.Bind(ColumnDefinition.MaxWidthProperty, nameof(TreeViewColumn.MaxWidth), column); definition.Bind(ColumnDefinition.MinWidthProperty, nameof(TreeViewColumn.MinWidth), column); }
public static ColumnDefinition BindWidthColumnDefinition(this ColumnDefinition self, string path, BindingMode mode = BindingMode.Default, IValueConverter converter = null, object converterParameter = null, string stringFormat = null, object source = null, object targetNullValue = null, object fallbackValue = null) => self.Bind(ColumnDefinition.WidthProperty, path, mode, converter, converterParameter, stringFormat, source, targetNullValue, fallbackValue);
protected override ColumnDefinition GetColumnDefinition(ContentPresenter Child, int Index) { var Result = base.GetColumnDefinition(Child, Index); var TreeViewItem = PART_TreeViewItem ?? this.GetParent <TreeViewItem>(); if (TreeViewItem == null) { throw new InvalidOperationException("TreeViewRowHeader must be hosted in a control that inherits TreeViewItem."); } var TreeView = PART_TreeView ?? TreeViewItem.GetParent <TreeView>(); try { if (TreeView is TreeViewExt && TreeView.As <TreeViewExt>().Columns.Count > 0 && Index < TreeView.As <TreeViewExt>().Columns.Count) { var Column = TreeView.As <TreeViewExt>().Columns[Index]; Result = new ColumnDefinition(); var NodeDepth = TreeViewItem.GetDepth(); var a = Index == 0 ? new TreeViewColumnGridLengthConverter(ColumnOffset) : null; var b = Index == 0 ? new TreeViewColumnDoubleConverter(ColumnOffset) : null; var c = Index == 0 ? new TreeViewColumnDoubleConverter(ColumnOffset) : null; var n = Index == 0 ? NodeDepth.ToDouble() as object : null; Result.Bind(ColumnDefinition.WidthProperty, Column, "Width", a, n, BindingMode.OneWay, UpdateSourceTrigger.PropertyChanged); Result.Bind(ColumnDefinition.MinWidthProperty, Column, "MinWidth", b, n, BindingMode.TwoWay, UpdateSourceTrigger.PropertyChanged); Result.Bind(ColumnDefinition.MaxWidthProperty, Column, "MaxWidth", c, n, BindingMode.TwoWay, UpdateSourceTrigger.PropertyChanged); Child.Bind(ContentPresenter.MarginProperty, Column, "ContentMargin"); } } catch { Result = null; } return(Result); }
//... protected override void Bind(TreeViewColumn column, ColumnDefinition definition) { base.Bind(column, definition); definition.Bind(ColumnDefinition.WidthProperty, nameof(TreeViewColumn.Width), column, BindingMode.OneWay); }