2009-07-22 5 views
1

DataGridTextColumnのいくつかのプロパティ(つまり、幅、並べ替え順序など)にバインディングを追加したいと考えていますが、これらのプロパティはDependencyPropertysではないようです彼らは縛られることはできません。別の答えは、DependencyPropertysとしてそれらのプロパティを公開するDataGridTextColumnのサブクラスを提案しましたが、私はこれを行う方法に関する情報を見つけることができないようです。Silverlight:DependencyPropertyで非依存プロパティを折り返す

おかげで、 ロバート

答えて

0

FrameworkElement(ないDependencyObject)のサブクラスのみをDependencyProperty Sを持つことができます。したがって、DataGridColumnのプロパティに直接バインドすることは不可能です。

0

はこれを試してみてください:Silverlightで

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の呼び出しを追加しました。もう一方の方法は機能しません。つまり、Widthプロパティを直接設定するとBindableWidthは更新されませんが、このシナリオでは問題はないと思います。 –

+0

ありがとう!ただし、DataGridColumnはFrameworkElementではないため、バインドすることはできません。 –

関連する問題