Trong dự án WPF của tôi, tôi giữ quyền kiểm soát người dùng trong một dự án thư viện riêng biệt. Việc kiểm soát người dùng truy cập các nguồn lực trong một file XAML riêng biệt, như thế này:WPF UserControl không thể tìm thấy tài nguyên XAML khi tham chiếu dự án
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Resources/ViewResources.xaml" />
</ResourceDictionary.MergedDictionaries>
<!-- Local styles here -->
</ResourceDictionary>
</UserControl.Resources>
các tập tin tài nguyên, ViewResources.xaml, nằm trong một thư mục trong dự án thư viện kiểm soát tên Tài. Nó có hành động xây dựng mặc định (Trang) và công cụ tùy chỉnh (MSBuild: Biên dịch).
Vấn đề là khi tôi tham khảo thư viện điều khiển trong ứng dụng WPF của tôi và sử dụng điều khiển người dùng. Khi chạy, tôi nhận được XamlParseException sau:
Set property 'System.Windows.ResourceDictionary.Source' threw an exception.
... mà kết thúc tốt đẹp các IOException:
Cannot locate resource 'resources/viewresources.xaml'.
Làm thế nào tôi có thể sửa lỗi này? Tôi đã cố gắng thay đổi hành động xây dựng của tệp tài nguyên thành "nội dung" và sao chép nó vào thư mục đầu ra (hoạt động cho các tệp và các tài nguyên "câm" tương tự). Nhưng không có kết quả. Ngoài ra, nó không hoạt động tài sản trong điều khiển người dùng sau đó.
Có cách nào tốt hơn để chỉ định đường dẫn không?
Tôi có phải di chuyển tệp tài nguyên đến dự án ứng dụng (tôi không muốn, vì nó thuộc về miền của người dùng kiểm soát).
Là một phím tắt cho bất kỳ ai khác tìm thấy này, tôi đã thay đổi 'Themes \ AvalonDockTheme.xaml' cho 'gói: // ứng dụng: ,,,/Themes/AvalonDockTheme.xaml' kể từ khi tham chiếu XAML ở trong cùng một hội đồng. Cảm ơn, Tor! –
Tôi không thể có được điều này để làm việc cho UserControls của tôi sử dụng tài nguyên. Vì vậy, tôi chỉ đơn giản sử dụng PropertyGrid để chọn tài nguyên Xaml của tôi từ một trình đơn thả xuống - nó dẫn đến một định dạng như sau: ' ' làm việc cho tôi. –
Adam
Liên kết bị hỏng. MSDN cho biết nội dung không còn nữa. Để khắc phục điều đó, hãy chọn nội dung cho ".NET 4.0" trên trang. Đây là liên kết trực tiếp: https://msdn.microsoft.com/en-us/library/aa970069%28v=vs.100%29.aspx – ygoe