2010-04-26 19 views
13

4.0 serisi WPF araçlarının yeni d: DesignInstance özelliğini kullanıyorum. Harika çalışıyor!XAML'de d: DesignInstance özelliklerinin nasıl ayarlanacağı?

Sadece şunu sorun yaşıyorum: Örnekte özellikleri nasıl ayarlayabilirim? Böyle Verilen şey:

<Grid d:DataContext="{d:DesignInstance plugin:SamplePendingChangesViewModel, IsDesignTimeCreatable=True}"/> 

nasıl varsayılan ctor bunları ayarlamak veya başka bir nesne başlatıcısı aracılığıyla yönlendirme kenara ViewModel üzerinde özelliklerini ayarlayabilirsiniz?

Ben bu deneyin verdi ama VS derleme hataları verir "d: DataContext bulunamadı": DataContext = {: Ben bir kaynak ve 'd kullanarak dönüyorum an için

<Grid> 
    <d:DataContext> 
     <d:DesignInstance IsDesignTimeCreatable="True"> 
      <plugin:SamplePendingChangesViewModel ActiveTagIndex="2"/> 
     </d:DesignInstance> 
    </d:DataContext> 

StaticResource SampleData} ', kaynaktaki özellikleri ayarlayabileceğim.

Bunu d: DesignInstance aracılığıyla yapmanın bir yolu var mı? muhtemelen yerine d:DataContext satır içine alma d:DesignData kullanmalıdır @jberger

+0

Sen sahip ya: 1. varsayılan ctor veya 2. d: [DesignData] (http: //msdn.micros oft.com/en-us/library/ee823176.aspx) d yerine: DesignInstance –

+0

Bu, tam istisna (Bu yanıtı yönetmek için Yararlı): Hata 'd: DataContext' türü bulunamadı. Bir montaj başvurusu eksik olmadığını ve başvurulan tüm derlemelerin oluşturulduğunu doğrulayın. –

cevap

22

gibi. Eğer d ayarlayabilirsiniz Ancak

: yanı xaml dosyasında DataContext satır içi gizli d:DataContext özelliğini nitelemek doğru sınıf (DesignProperties) kullanmaktır:

<d:DesignProperties.DataContext> 
    <plugin:SamplePendingChangesViewModel ActiveTagIndex="2"/> 
</d:DesignProperties.DataContext> 

nasıl anlarsınız hangi sınıf ile hak kazanmak için? Özellik sözdiziminde ayarlanmış bir özellik üzerinde fare ve tam özellikli özellik adıyla bir araç ipucu görünür.

Ayrıca, işin özel olarak ismini verdiğiniz türden bir örnek oluşturmak için (veya tasarım zamanında instanci edilemiyorsa bu tür bir proxy oluşturması), d:DesignInstance işaretleme exstensionını kullanmadığınızı unutmayın. . İstediğimiz bu değil, bu durumda inline xaml örneğini tanımlamak istiyoruz.

Gerçekten de, d:DesignData (ayrıca bir işaret uzantısı), xaml dosyasını aradığı ve yalnızca varsayılan yapıcıyı kullanmak yerine kullanmak üzere gerçek örneğe serpiştirilmesi dışında, aynı şekilde çalışır.

Sadece şeyiyle ben de onların tam sınıf adları (xxxExtension) kullanarak hem eleman sözdizimi ile DesignData ve DesignInstance kullanabilirsiniz bahsetmeliyiz:

<d:DesignProperties.DataContext> 
    <d:DesignDataExtension Source="SampleData.xaml"></d:DesignDataExtension> 
</d:DesignProperties.DataContext> 

Bu en işaretleme exstensions ama onun değil için de geçerlidir (The Binding sınıf önemli bir istisnadır) bu adlandırma esası takip etmeleri gerekmektedir diğer bilgiler burada bulunabilir:

Markup Extensions and WPF XAML

İlgili konular