2009-07-22 4 views
1

Я хочу, чтобы иметь возможность добавлять привязку к некоторым свойствам DataGridTextColumn (т.е. Ширина, порядок сортировки и т. Д.), Однако кажется, что эти свойства не являются DependencyPropertys, поэтому они не могут быть связаны. Другой ответ предложил подклассифицировать DataGridTextColumn, чтобы показать эти свойства как DependencyPropertys, однако я не могу найти информацию о том, как это сделать.Silverlight: обертывание non-DependencyProperty в DependencyProperty

Спасибо, Роберт

ответ

0

В Silverlight только подклассы 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

Er ... это не сработало с тех пор, как оно установлено через привязку, вызов callback не вызван, а при настройке через свойство DependancyProperty не изменяется. –

+1

Извините, должно быть, было слишком рано для меня, чтобы это сделать! Да, я вижу, что настройка BindableWidth, с которой вы связываетесь, не приведет к изменению DP. Добавлен вызов SetValue в настройщике свойств. Другой способ не будет работать, т. Е. Если вы установите свойство Width напрямую, BindableWidth не будет обновляться, но я не думаю, что это важно для этого сценария. –

+0

Спасибо! Однако не имеет значения, поскольку поскольку DataGridColumn не является элементом FrameworkElement, он не может быть связан. –

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