tôi giữ nguồn ứng dụng của tôi trong một DLL riêng biệt và tham khảo chúng trong EXE chính của tôi sử dụng một cái gì đó như thế này trong App.xaml: -WPF đã hợp nhất các từ điển tài nguyên trong mọi điều khiển người dùng - ý tưởng tồi?
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/MyThemesAssembly;component/Themes/Generic.xaml"/>
</ResourceDictionary.MergedDictionaries>
Khi tôi chỉnh sửa một cửa sổ đó là trong dự án EXE chính, nhà thiết kế VS2010 không nhận ra bất kỳ tài nguyên nào từ assembly khác, vì vậy tôi không thấy bất kỳ kiểu dáng nào được áp dụng (không thực sự là vấn đề vì tôi luôn làm việc trong khung nhìn XAML). Tuy nhiên Resharper cũng không nhận ra những tên tài nguyên bên ngoài này, dẫn đến rất nhiều sự nguệch ngoạc dưới tên tài nguyên khi tôi đang chỉnh sửa XAML.
Tôi thấy rằng tôi có thể sửa cả thiết kế VS và Resharper bằng cách bao gồm XAML ở trên trong mỗi cửa sổ và điều khiển người dùng, nhưng điều này sẽ có ảnh hưởng xấu đến bộ nhớ và/hoặc hiệu suất không? Mỗi cửa sổ sẽ nhận được một bản sao tài nguyên riêng biệt?
Vâng, các lỗi trong IDE và các công cụ không ảnh hưởng đến mã của bạn. Bên cạnh đó, bao gồm các từ điển tài nguyên trong mỗi và mọi điều khiển là một cách dễ bị lỗi (nếu bạn quyết định đổi tên từ điển? Để thêm từ điển khác?). – Vlad
Tuy nhiên, tôi sẽ cố gắng thêm một quirk làm việc xung quanh vấn đề trong chế độ thiết kế. (Có lẽ điều này sẽ giúp: 'public class MyUserControlBase: UserControl {public MyUserControlBase() {if (DesignerProperties.GetIsInDesignMode (this)) LoadExternalDictionariesExplicitlyHere(); ...') – Vlad
@Vlad Tôi đã học cách sống với những khúc khích - cái này cách tiếp cận sửa chữa Resharper thực sự chỉ là một "tốt đẹp để có". Tôi không nghĩ rằng đổi tên/thêm tài nguyên sẽ là một vấn đề - trong ví dụ XAML của tôi ở trên, "Generic.xaml" tự kết hợp một tải các tài nguyên khác trong hội đồng đó, vì vậy thật dễ dàng để thêm các tài nguyên mới. Tôi quan tâm nhiều hơn về việc bao gồm đó trong mỗi cửa sổ sẽ thổi bộ nhớ/hiệu suất của ứng dụng (hay VS2010). –