2012-04-29 11 views
10

WPF projesinde, this post'da şikayet edildiği gibi, xaml'de kullanılan başvurular CopyLocal true değerine ayarlanmış olsa bile bin klasörüne kopyalanmaz. MVVM modeli ile, üçüncü taraf kontrollerinin hiç kod referansı olmadan kullanılmaları yaygındır.Yalnızca XAML'de kullanılan derleme bin klasöre kopyalanmıyor

this post'den ilham alarak, aşağıdaki geçici çözümü kullanıyorum. Yeterince kolay, ancak, değişkenin, sürekli değişime tabi olan, proje boyunca XAML dosyalarında gerçekten kullanılanlarla senkronize olarak el ile listelenmesi gerekir. Benim sorum gerçek bir çözüm veya daha iyi bir çözüm olup olmadığı mı? (Ben IMHO az keşfetmek-edebilmek ve değişimlere karşı daha savunmasızdır post-build komut dosyası, kullanma fikri farkındayım.)

internal static class BuildTricker 
{ 
    private static readonly RadTreeView radTreeView; 
    static BuildTricker() 
    { 
     // Set and get once to avoid compiler optimization. 
     radTreeView = null; 
     if (radTreeView != null) 
     { 
      throw new InvalidOperationException("This should never happen."); 
     } 
    } 
} 
+0

- bu GAC'de eğer bu deneyebilirsiniz - [ Gerçek] (http://stackoverflow.com/a/8703079/417747) – NSGaga

+0

Bu, RadControls'a özgü değildir ve '' etiketi, CopyLocal' özelliğinin uygulanmasıdır. –

cevap

7

kullandığım geçici çözüm emin öğe bir isim de tanımlamıştır yapmaktır XAML. Bu, bunun (kısmi) sınıfın arkasındaki oluşturulmuş kodda bir örnek oluşturmasına neden olur. Bu, referansı belirlemek için referans sistem için yeterlidir ve bağımlılık dll'de kopyalanır.

ör .:

<ts:HorizontalToggleSwitch IsChecked="{Binding ShowMyItemsOnly}" 
          CheckedContent="Show My Items Only" 
          UncheckedContent="Show All Items" 
          x:Name="NameRequiredForCopyLocal"> 
+0

Bağlama biçimlendirme için üçüncü taraf bağımlılığı kullanıyorum ve görünüşte işe yaramıyor ... –

+1

Bu sorunumu oxyplot ile giderdim. Teşekkür ederim! –

+0

Denetim, yalnızca kontrol şablonlarında ortaya çıkarsa, bu çözüm çalışmaz gibi görünüyor. –

1

XAML-Code ile Bu bilinen bir sorun. VisualStudio, ilgili DLL kullanılan, çünkü XAML kod ayrıştırma sırasında garip bir şey vardır. Benim durumum için sınıfın arkasındaki kodda veya projedeki herhangi bir sınıftaki belirli DLL'den herhangi bir nesnenin Niteliği yaratılmasına yardımcı oldu. (Geçici çözüm) Örneğin

: RAD/Telerik var

// This is only for the build process, to copy target assembly to output. 
private RadTreeView _TreeViewForCompiler;