2010-02-11 29 views
5

Tôi đã sử dụng Prism trong một thời gian và tận hưởng việc phân tách các mô-đun của mình dễ dàng hơn bao nhiêu.Cách sử dụng DataTemplates trong Prism

Tính năng này đặc biệt hữu ích cho các chế độ xem và xem vì bạn có thể đưa các mô hình xem qua giao diện và chế độ xem qua trình quản lý vùng.

Thật không may điều này chỉ hoạt động khi quan điểm của tôi là điều khiển người dùng thổi hoàn toàn trừ khi tôi thiếu điều gì đó ở đây (và tôi chân thành hy vọng tôi).

Rất nhiều lần, tôi sẽ tạo một ViewModel và một DataTemplate phù hợp. Sau đó, chúng có thể được sử dụng bởi các hội đồng khác để soạn một khung nhìn.

Vấn đề của tôi là, mà tôi thấy không có cách đề cập đến những DataTemplates mà không tham khảo lắp ráp chứa, vì vậy trong file XAML của tôi, tôi viết một cái gì đó như:

<ResourceDictionary Source="pack://application:,,/......> 

Tất nhiên điều này là không thực sự tách riêng, mặc dù Tôi cố gắng đảm bảo rằng tôi không tham khảo hội đồng ở bất kỳ nơi nào khác trong mã của tôi.

Một giải pháp khác mà tôi nghĩ, là đặt các bảng dữ liệu vào dự án Cơ sở hạ tầng, nhưng tôi không thích quá nhiều, vì tôi muốn mọi thứ thuộc về một mô-đun được chứa trong nó (ngoại trừ giao diện của khóa học).

Vì vậy, có ai có giải pháp tốt hay tôi đã bỏ lỡ một số tính năng lăng kính?

Trả lời

2

Tôi khuyên bạn nên tạo dịch vụ đóng gói thêm từ điển tài nguyên vào bộ sưu tập Application.Resources.MergedDictionaries.

// Service interface (defined in the 'infrastructure' project) 
public interface IResourceAggregator 
{ 
    void AddResource(Uri resourceUri); 
} 

// Service implementation (implemented at the application/shell level) 
class ResourceAggregator : IResourceAggregator 
{ 
    public void AddResource(Uri resourceUri) 
    { 
     var resourceDictionary = new ResourceDictionary() { Source = resourceUri }; 
     var app = Application.Current; 
     app.Resources.MergedDictionaries.Add(resourceDictionary); 
    } 
} 

Tôi hy vọng bạn sẽ "giải quyết" dịch vụ này trong khi tải mô-đun và sử dụng nó để "đăng ký" từ điển tài nguyên mô-đun cục bộ.

+0

Điều đó sẽ hoạt động, điều bất lợi duy nhất với điều này là, tôi không nhận được sự giúp đỡ bên trong tệp xaml của tôi, nếu tôi không nhập khẩu các biểu dữ liệu vào nó một cách rõ ràng. Ví dụ. Resharper cảnh báo "Tài nguyên không tìm thấy" và tôi rời phản hồi cho tôi biết nếu tôi viết những thứ đúng, v.v ... Nếu tôi chỉ có thể tham khảo mẫu dữ liệu như thể chúng là giao diện ... –

Các vấn đề liên quan