2012-04-29 33 views
10

Trong dự án WPF, tài liệu tham khảo chỉ được sử dụng trong xaml không được sao chép vào thư mục bin ngay cả với CopyLocal được đặt thành true, như được phàn nàn trong this post. Với mẫu MVVM, điều phổ biến là các điều khiển của bên thứ 3 được sử dụng mà không có bất kỳ tham chiếu mã nào ở đằng sau.Lắp ráp chỉ được sử dụng trong XAML không được sao chép vào thư mục bin

Lấy cảm hứng từ this post, Tôi đang sử dụng giải pháp thay thế bên dưới. Thật dễ dàng, tuy nhiên, người ta phải tự duy trì danh sách biến trong đồng bộ với những người thực sự được sử dụng trong các tập tin XAML trên dự án, mà có thể thay đổi liên tục. Câu hỏi của tôi là liệu có giải pháp thực sự hay giải pháp tốt hơn? (Tôi nhận thức được ý tưởng của việc sử dụng sau xây dựng kịch bản, mà IMHO ít khám phá-thể và dễ bị tổn thương hơn với những thay đổi.)

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

Đó là RAD/Telerik - nếu nó trong GAC bạn có thể thử này - [ Đúng] (http://stackoverflow.com/a/8703079/417747) – NSGaga

+0

Nó không dành riêng cho RadControls và '' là việc triển khai thuộc tính 'CopyLocal'. –

Trả lời

7

Cách giải quyết tôi sử dụng là để đảm bảo các mục có một cái tên được định nghĩa trong XAML. Điều này làm cho nó tạo ra một cá thể cho nó trong mã được tạo ra đằng sau (một phần) lớp. Điều này là đủ để tham khảo hệ thống sau đây để phát hiện các tài liệu tham khảo, và sao chép trong dll phụ thuộc.

ví dụ .:

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

Tôi đang sử dụng sự phụ thuộc của bên thứ ba để đánh dấu ràng buộc và dường như không hoạt động ... –

+1

Điều này đã khắc phục sự cố của tôi với oxyplot. Cảm ơn bạn! –

+0

Dường như giải pháp này không hoạt động nếu điều khiển chỉ xuất hiện trong các mẫu điều khiển. –

1

Đây là vấn đề được biết đến với XAML-Code. Có một cái gì đó kỳ lạ trong quá trình phân tích mã XAML vì VisualStudio biết, rằng DLL tương ứng được sử dụng. Đối với trường hợp của tôi, nó đã giúp tạo ra một thuộc tính của bất kỳ đối tượng nào từ DLL cụ thể trong mã phía sau lớp hoặc bất kỳ lớp nào trong dự án. (Giải pháp)

Ví dụ:

// This is only for the build process, to copy target assembly to output. 
private RadTreeView _TreeViewForCompiler; 
Các vấn đề liên quan