2009-07-22 4 views
1

DataGridTextColumn (즉, 너비, 정렬 순서 등)의 일부 속성에 Binding을 추가 할 수 있기를 원하지만 이러한 속성은 DependencyPropertys가 아닌 것처럼 보입니다. 그들은 구속 될 수 없다. 또 다른 대답은 DataGridTextColumn을 하위 클래스로 지정하여 DependencyPropertys로 해당 속성을 표시하는 방법을 제안했지만이 방법에 대한 정보는 찾을 수 없습니다.Silverlight : DependencyProperty에 비 DependencyProperty 래핑

감사합니다, 로버트

답변

0

, FrameworkElement (안 DependencyObject)의 서브 클래스를 DependencyProperty들 수 있습니다. 따라서 DataGridColumn의 속성에 직접 바인딩하는 것은 불가능합니다.

0

이 시도 : 실버 라이트에서

public class BindableGridColumn : DataGridTextColumn 
    { 
     public DataGridLength BindableWidth 
     { 
      get { return Width; } 
      set { 
        SetValue(BindableWidthProperty, value); 
        Width = value; 
       } 
     } 

     // Using a DependencyProperty as the backing store for BindableWidth. This enables animation, styling, binding, etc... 
     public static readonly DependencyProperty BindableWidthProperty = 
      DependencyProperty.Register("BindableWidth", typeof(DataGridLength), typeof(BindableGridColumn), new PropertyMetadata(DataGridLength.Auto)); 
    } 
+0

... 바인딩을 통해 설정된 경우 콜백이 호출되지 않으므로 작동하지 않습니다. 속성을 통해 설정하면 DependancyProperty가 변경되지 않습니다. –

+1

죄송합니다. 시도하기에는 너무 일찍 왔음에 틀림 없습니다. 예, 바인드 할 BindableWidth를 설정하면 DP가 변경되지 않습니다. 속성 설정자에서 SetValue에 대한 호출을 추가했습니다. 다른 방법은 작동하지 않습니다. 즉, 너비 속성을 직접 설정하면 BindableWidth는 업데이트되지 않지만이 시나리오에서는 중요하지 않다고 생각합니다. –

+0

감사! DataGridColumn은 FrameworkElement가 아니기 때문에 바인딩 할 수 없으므로 어쨌든 중요하지 않습니다. –

관련 문제