2008-11-23 15 views
3

Comment exposer la propriété ActualWidth de l'un des composants de mon contrôle utilisateur aux utilisateurs?WPF UserControl expose ActualWidth

J'ai trouvé beaucoup d'exemples de la façon d'exposer une propriété normale en créant une nouvelle propriété de dépendance et de liaison, mais aucun sur la façon d'exposer une propriété en lecture seule comme ActualWidth.

Répondre

8

Ce dont vous avez besoin est une propriété ReadOnly. La première chose que vous devez faire est de puiser dans la notification de changement de la dépendance ActualWidthProperty sur le contrôle que vous devez exposer. Vous pouvez le faire en utilisant le DependencyPropertyDescriptor comme ceci:

// Need to tap into change notification of the FrameworkElement.ActualWidthProperty 
Public MyUserControl() 
{ 
    DependencyPropertyDescriptor descriptor = DependencyPropertyDescriptor.FromProperty 
     (FrameworkElement.ActualWidthProperty, typeof(FrameworkElement)); 
    descriptor.AddValueChanged(this.MyElement, new EventHandler 
      OnActualWidthChanged); 
} 

// Dependency Property Declaration 
private static DependencyPropertyKey ElementActualWidthPropertyKey = 
     DependencyProperty.RegisterReadOnly("ElementActualWidth", typeof(double), 
     new PropertyMetadata()); 
public static DependencyProperty ElementActualWidthProperty = 
     ElementActualWidthPropertyKey.DependencyProperty; 
public double ElementActualWidth 
{ 
    get{return (double)GetValue(ElementActualWidthProperty); } 
} 
private void SetActualWidth(double value) 
{ 
    SetValue(ElementActualWidthPropertyKey, value); 
} 

// Dependency Property Callback 
// Called when this.MyElement.ActualWidth is changed 
private void OnActualWidthChanged(object sender, Eventargs e) 
{ 
    this.SetActualWidth(this.MyElement.ActualWidth); 
} 
0

ActualWidth est une propriété publique en lecture seule (provenant de FrameworkElement) et est exposée par défaut. Quel est le cas que vous essayez d'atteindre?

+0

c'est public pour le contrôle total, mais pas pour l'un des composants spécifiques du contrôle est composé de. – MJS