2010-07-19 7 views
3

GridView가 포함 된 ListView가 포함 된 WPF MVVM 응용 프로그램이 있습니다.
도우미 클래스를 사용하여 잘 작동하는 GridViewColumn을 만들고 있습니다.GridViewColumn.Width에 속성을 프로그래밍 방식으로 바인딩합니다.

내 문제 : 너비를 다시 읽을 수 있도록 너비를 twoway-bind하고 싶습니다.

지금 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

관련 문제