2013-08-10 18 views
5

Bir Düğme içinde bir TextBlock içeren WPF'de basit bir Kullanıcı Denetimi oluşturuyorum. Ayrıca, "Metin" bağımlılığı özelliğine de sahiptir.UserControl Dependency Özellik tasarım süresi

<MyButton Text="Test" /> 

sorun, Visual Studio tasarım değişmediği, ancak çalışma zamanı çalışır:

public partial class MyButton : UserControl 
{ 
    public MyButton() 
    { 
     InitializeComponent(); 
     this.DataContext = this;   
    } 

    public string Text 
    { 
     get { return (string)GetValue(TextProperty); } 
     set { SetValue(TextProperty, value); } 
    } 
    public static readonly DependencyProperty TextProperty = 
     DependencyProperty.Register("Text", typeof(string), typeof(MyButton), new PropertyMetadata(string.Empty)); 

} 

Sonra böyle UserControl kullanın.

Sorun nedir?

Ben de başarılı olamadı, UC tanımı içinde
DataContext="{Binding RelativeSource={RelativeSource Self}}" 

çalıştı.

cevap

4

aşağıda gibi AffectsRender belirterek, PropertyMetadata yerine FrameworkPropertyMetadata kullanmayı deneyin, sonra yeniden başlatma Visual Studio:

public static readonly DependencyProperty TextProperty = 
    DependencyProperty.Register("Text", typeof(string), typeof(MyButton), 
     new FrameworkPropertyMetadata(string.Empty, 
      FrameworkPropertyMetadataOptions.AffectsRender)); 

MSDN Documentation yaklaşık FrameworkPropertyMetadataOptions.AffectsRender

dışındaki render veya düzen kompozisyonunun bazı yönü (diyor ölçüsü veya düzenleme), bu bağımlılık özelliğindeki değer değişikliklerinden etkilenir. Diğer durumlarda

vb

+2

Büyük, AffectsMeasure, AffectsArrange gibi seçenekler vardır! İlk anda, bu işe yaramaz gibi gözüküyor, bu yüzden Visual Studio'yu kapatıp açıyorum ve şimdi iyi çalışıyor. Çok teşekkürler. – Guilherme

İlgili konular