Tôi có một bộ điều khiển Silverlight, được gọi là "MySilverlightControls". Một vài thư mục nằm trong assembly đó tôi có một lớp mở rộng một cột lưới từ một nhà cung cấp bên thứ ba, chúng ta hãy gọi nó là "MyImageColumn.cs".Truy cập tài nguyênDịch vụ từ điển theo chương trình
Tôi cũng đã tạo một từ điển tài nguyên có tên là Generic.xaml
, mục này nằm trong thư mục Themes
của hội đồng. Trong đó điển tài nguyên i đã xác định một ControlTemplate gọi MyImageColumnTemplate:
<ControlTemplate x:Name="MyImageColumnTemplate" >
<Grid Margin="8,8,4,4" MaxHeight="32" MaxWidth="32">
<Grid.Resources>
<localGrid:StatusColumnImageConverter x:Key="ImageContentConverter"/>
</Grid.Resources>
<Border Margin="5,5,0,0" Background="Black" Opacity="0.15" CornerRadius="5" />
<Border Background="#FF6E6E6E" CornerRadius="4,4,4,4" Padding="4" Margin="0,0,5,5">
<Border Background="White" CornerRadius="2,2,2,2" Padding="3">
<Image Source="{Binding EditValue, Converter={StaticResource ImageContentConverter}}" Stretch="Uniform"/>
</Border>
</Border>
</Grid>
</ControlTemplate>
Câu hỏi của tôi là: từ MyImageColumn, làm thế nào tôi có thể lập trình tham khảo/tải kiểm soát mẫu này để tôi có thể gán nó vào một tài sản trên cột? Tôi hy vọng sẽ sử dụng cú pháp tương tự như sau:
ControlTemplate ct = (ControlTemplate)Application.Current.Resources["MyImageColumnTemplate"];
nhưng điều này luôn trả về giá trị rỗng. Khi tôi tải lắp ráp lên trong Reflector, tôi thấy rằng các tập tin Generic.xaml
là có, tên của tài nguyên là MySilverlightControls.g.resources
, và đường dẫn trong đó là themes/generic.xaml
.
Tôi có thể truy cập chính xác các mục riêng lẻ trong từ điển tài nguyên này bằng cách nào?
Đã lưu tôi rất nhiều thời gian. Cảm ơn bạn rất nhiều vì bài đăng trên blog. Lam tôt lăm. – captonssj
Chỉ cần lưu ý về lý do tại sao @slugster thực hiện hai dòng đầu tiên đó. Kiểu 'gói' Uri không được nạp và được đăng ký theo mặc định, gây ra' Uri uri = new Uri (bất kỳ chuỗi kiểu Uri nào), 'để ném một ngoại lệ. Cách đăng ký này ít xâm nhập vào mã của bạn hơn là đợi cho đến khi bạn đã tạo 'FrameworkElement' đầu tiên của mình trước khi cho phép bản thân sử dụng URI' pack'. –