2010-07-19 4 views
3

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

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

Код для создания 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; 
} 

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

ответ

3

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

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

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

GridView не содержит метод SetBinding, где я должен искать это? – Sam

+0

Это не в GridView, это в BindingOperations, как сказано в ответе ... –

+0

@Sam: Да! Поскольку класс GridViewColumn (а не GridView) не имеет метода SetBinding, привязка должна быть выполнена таким образом. Проверьте мое редактирование для кода. – Amsakanna

Смежные вопросы