2011-10-30 8 views
2

업데이트되지 않는 바인딩 시작 값으로 값 - 그때이 부동산에 내 UI에서 그리드의 열을 바인딩 한 400종속성 속성은 다음과 같이 내가 종속성 때에 프로퍼티를 정의

이 경우 ...

<ColumnDefinition 
    Name="ProductInfo" 
    Width="{Binding Path=AnimateColumnWidth, 
        Converter={StaticResource doubleToGridLength}, 
        Mode=TwoWay}" /> 

제가 알고 있듯이 열 너비가이 속성에 바인딩되므로 속성을 업데이트 할 때마다 열 너비도 업데이트되어야합니다.

속성을 변경할 때 너비가 업데이트되지 않으므로 잘못된 것은 무엇입니까? 나는 또한 나던 작품을 통해 그것을 업데이트하려고 노력 중이다. 또한 AnimateColumnWidth 속성의 getter에 설정된 중단 점은 결코 적중되지 않습니다. 즉, 속성을 검색하려고 시도한 적이 전혀 없음을 의미합니다.

(이 때문에 분명히 어디 선가 뭔가를 부러 작동 않았다!)

각주 :

내 응용 프로그램의 루트 네임 스페이스에 정의되어 변환 된 값은 (나는 couldnt는 경우 WPF 불평 것이라고 믿는다 그것을 찾아라).

[ValueConversion(typeof(Double), typeof(GridLength))] 
public class DoubleToGridLength : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return new GridLength((double)value); 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return ((GridLength)value).Value; 
    } 
} 

답변

0

내가 한 일은 "this"에 영향을주고 싶었던 표의 datacontext로 설정되었습니다.

public MainWindow() 
{ 
    InitializeComponent(); 
    ProductsArea.DataContext = this; 
} 
5

당신은 "잘못"입니다 "AnimateColumnWidthProperty"과 재산을 등록 만 필드 이름, 당신은 아마 "AnimateColumnWidth" 임의의 원하는 (또는 당신은 물론 바인딩을 변경할 수 있지만, 그대로, 그것은 경로 점 때문에 실패 미등록 자산으로).

디버깅을 마치고 bindings을 읽으면 바인딩 엔진에서보고하는 오류를 발견 할 수 있습니다. ("개체 x에서 찾을 수없는 속성 x"와 같은 것).

getter 또는 setter의 중단 점을 사용해도 아무 것도 알려주지 않지만 바인딩 엔진은 이 아니며은 사용하지 않습니다. 이는 사용자 편의를위한 것입니다.

+0

msdn 디버깅 바인딩 링크에 연결하는 경우 +1 –

+0

바인딩에 대한 힌트가 트릭을 만들었습니다. 그리드의 datacontext가 설정되지 않았습니다. – Remotec

관련 문제