Programmatically bind a property to GridViewColumn.Width

I have a MVVM WPF application containing a ListView containing a GridView.
Using the helper class, I create a GridViewColumn that works great.

My problem: I want twoway-bind width so that I can read the changes in width.

The code for creating the GridViewColumn now looks like this:

private static GridViewColumn CreateColumn(GridView gridView, object columnSource)
{
  GridViewColumn column = new GridViewColumn();
  String headerTextMember = GetHeaderTextMember(gridView);
  String displayMemberMember = GetDisplayMemberMember(gridView);
  String widthMember = GetWidthMember(gridView);
  // set header
  column.Header = GetPropertyValue(columnSource, headerTextMember);

  // set display binding
  String propertyName = GetPropertyValue(columnSource, displayMemberMember) as String;
  column.DisplayMemberBinding = new Binding(propertyName);

  // bind with - but how?
  //Binding widthBinding = new Binding(widthMember);
  //widthBinding.Source = columnSource;
  //widthBinding.Mode = BindingMode.TwoWay;
  //gridView.SetBinding(GridViewColumn.WidthProperty, widthBinding); <- gridView got no SetBinding :(
  }
  return column;
}

Does anyone have some pointers to me, how can I relate the width?

+3
source share
1 answer

Check this out: BindingOperations.SetBinding

BindingExpressionBase . - DependencyObject, SetBinding .

BindingOperations.SetBinding(column, GridViewColumn.WidthProperty, widthBinding);
+3

Source: https://habr.com/ru/post/1755290/


All Articles