Программно связать свойство с GridViewColumn.Width - PullRequest
3 голосов
/ 19 июля 2010

Я получил приложение WPF MVVM, содержащее ListView, содержащий GridView.
Используя вспомогательный класс, я создаю класс GridViewColumn, который прекрасно работает.

Моя проблема: я хочу связать два разаwidth, чтобы я мог читать изменения ширины.

Код для создания GridViewColumn прямо сейчас выглядит следующим образом:

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;
}

Кто-нибудь получил несколько указателей для меня, как я мог быпривязать ширину?

1 Ответ

3 голосов
/ 19 июля 2010

Проверьте это: BindingOperations.SetBinding

Этот метод создает новый экземпляр BindingExpressionBase и связывает экземпляр с данным свойством зависимости данного объекта.Этот метод позволяет прикрепить привязку к произвольному объекту DependencyObject, который может не предоставлять собственный метод SetBinding.

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