我想能夠以編程方式將屬性設置爲動態資源。如何在代碼後面使用DynamicResource?
myControl.Property = this.Resource[key]
不是有效的響應,因爲如果用'key'鍵替換資源,屬性不會自動更新。
感謝您迴應,
我想能夠以編程方式將屬性設置爲動態資源。如何在代碼後面使用DynamicResource?
myControl.Property = this.Resource[key]
不是有效的響應,因爲如果用'key'鍵替換資源,屬性不會自動更新。
感謝您迴應,
靜態資源不會更新無論你是在代碼或XAML做到這一點。你需要一個動態的資源。
在XAML:
<Grid x:Name="grid" Background="{DynamicResource Brush}"/>
在代碼:
grid.SetResourceReference(Grid.BackgroundProperty, "Brush");
注意DynamicResource不可用在Silverlight中;它只在WPF中(Silverlight只有StaticResource)。
由於您對Silverlight和WPF兩個問題進行了標記,因此我懷疑您可能正在尋找一種適用於兩者的解決方案。如果是這種情況,您可能會想要使用數據綁定而不是資源,因爲您需要更新屬性以響應更改。
是啊,我不知道DynamicResource在SL中不可用,我更新了標籤,你呢對WPF有任何想法? – 2009-11-17 20:22:02
尼古拉斯,我沒有關注。我沒有回答你的WPF問題嗎? – 2009-11-17 20:29:46
您告訴我使用數據綁定而不是資源,但是我怎樣才能在後面的代碼中綁定一個依賴項屬性到一個資源(這樣當資源被新的資源替換時,我的DP將被更新)。 我不明白我如何用綁定來做到這一點。 – 2009-11-18 08:52:07
不,你錯了,如果資源被另一個改變,靜態資源將更新目標。 如果資源的屬性更改,則StaticResource不會更新,就這些了。 – 2009-11-17 19:40:11
對不起,但你錯了。靜態資源的全部重點是它們在編譯時被解析。你可以做一個簡單的測試來證明這一點。 – 2009-11-17 19:48:41
沒辦法,我很確定自己,我怎麼能相信!對不起,或許正確的問題是「如何在後面的代碼中使用DynamicResource:p」 – 2009-11-17 20:07:04