2010-08-24 39 views
13

Cùng một dòng mã trong cùng một assembly hoạt động cho một thử nghiệm thử nghiệm nhưng không khác. Đây là dòng mã:truy cập từ điển tài nguyên trong mã wpf

var dic = new ResourceDictionary { Source = new Uri("pack://application:,,,/MyApp.Wpf;component/ImageResources.xaml") }; 

Lỗi tôi nhận được trong lịch thi đấu khác là System.UriFormatException: URI không hợp lệ: Cổng không hợp lệ được chỉ định.

Chuỗi uri cũng hoạt động trong xaml. Có cách nào tốt hơn để tải một từ điển tài nguyên trong mã?

Chúc mừng,
Berryl

=== CẬP NHẬT ===

Như tôi đã tìm thấy trong this posting, một cổng hợp lệ đã xảy ra bởi vì các chương trình gói không được đăng ký, trong đó có thể được thực hiện với mã như vậy:

if (!UriParser.IsKnownScheme("pack")) 
    UriParser.Register(new GenericUriParser(GenericUriParserOptions.GenericAuthority), "pack", -1); 

Tôi đoán rằng lịch thi đấu có thể tải từ điển bằng gói chương trình không có lỗi là do SUT là điều khiển người dùng ở đó và bằng cách nào đó đang tải lại nguồn khi một thể hiện của điều khiển người dùng được tạo ra.

Trả lời

26

Những gì tôi sử dụng là với UriKind như

var resource = new ResourceDictionary 
{ 
    Source = new Uri("/myAssemblyName;component/Themes/generic.xaml", 
        UriKind.RelativeOrAbsolute) 
}; 

HTH

0

@Prince Ashitaka câu trả lời cho bạn biết làm thế nào để sửa URI của bạn

Tuy nhiên cách ưa thích của truy cập vào một ResourceDictionary là trong XAML bạn thêm nó làm từ điển được hợp nhất

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="ImageResources.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

rồi bạn có thể truy cập thông qua mã bằng cách sử dụng TryFindResource(string Key) từ bất kỳ mã nào sau tệp

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