2009-11-17 35 views
6

Tôi muốn có thể đặt thuộc tính thành tài nguyên động theo lập trình.cách sử dụng DynamicResource trong mã phía sau?

myControl.Property = this.Resource[key] 

không phải là phản hồi hợp lệ, vì tài nguyên có khóa 'chìa khóa' được thay thế, thuộc tính không được cập nhật tự động.

Cảm ơn bạn đã trả lời,

Trả lời

13

Tài nguyên tĩnh sẽ không cập nhật cho dù bạn làm điều đó trong mã hay XAML. Bạn sẽ cần một tài nguyên động cho điều đó.

Trong XAML:

<Grid x:Name="grid" Background="{DynamicResource Brush}"/> 

Trong mã:

grid.SetResourceReference(Grid.BackgroundProperty, "Brush"); 
+0

Không có gì sai, nếu tài nguyên bị thay đổi bởi một tài nguyên khác, tài nguyên tĩnh sẽ cập nhật đích. StaticResource không cập nhật nếu thuộc tính của tài nguyên thay đổi, đó là tất cả. –

+0

Xin lỗi, nhưng bạn đã sai. Toàn bộ điểm của tài nguyên tĩnh là chúng được giải quyết tại thời gian biên dịch. Bạn có thể làm một bài kiểm tra đơn giản để chứng minh điều này. –

+0

Không có cách nào, tôi đã rất chắc chắn về bản thân mình, làm thế nào tôi có thể tin rằng !!! xin lỗi, có lẽ câu hỏi đúng là "cách sử dụng DynamicResource trong mã sau: p" –

1

Hãy nhận biết rằng DynamicResource không có sẵn trong Silverlight; nó chỉ có trong WPF (Silverlight chỉ có StaticResource).

Vì bạn đã gắn thẻ câu hỏi của mình cả Silverlight và WPF, tôi nghi ngờ rằng bạn có thể đang tìm kiếm giải pháp hoạt động ở cả hai. Nếu đúng như vậy, có thể bạn sẽ muốn sử dụng liên kết dữ liệu thay vì tài nguyên vì bạn yêu cầu thuộc tính cập nhật để phản hồi thay đổi.

+0

vâng, tôi không biết DynamicResource không có sẵn trong SL, tôi cập nhật thẻ, bạn có có bất kỳ ý tưởng cho WPF? –

+0

Nicolas, tôi không theo. Tôi đã không trả lời câu hỏi của bạn cho WPF chưa? –

+0

Bạn đã nói với tôi sử dụng databinding thay vì tài nguyên, nhưng làm thế nào tôi có thể, với databinding trong mã phía sau, ràng buộc một tài sản phụ thuộc vào một tài nguyên (để khi tài nguyên được thay thế bằng một tài nguyên mới, DP của tôi được cập nhật). Tôi không thấy làm thế nào tôi có thể làm điều đó với một ràng buộc. –

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