我们假设我们有以下词典:
<ResourceDictionary xmlns:sys="clr-namespace:System;assembly=mscorlib">
<sys:String x:Key="Test">Ala ma kota</sys:String>
</ResourceDictionary>
此字典在自定义控件中合并:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyDictionary.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
如何在应用程序运行期间从后面的代码中完全更改资源“Test”的值?
答案 0 :(得分:1)
如果您希望从代码中更改资源,那么只需像字典一样访问资源并更改所需的值:)
像这样:
this.Resource["myThickness"] = new Thickness(2);
那就是它:)
答案 1 :(得分:1)
您可以更改resource from code-behind
,但主要的是您如何绑定该资源,即通过StaticResource
或DynamicResource
。
像这样修改 -
Resources["Test"] = "Ala ma kota updated";
XAML (从代码后面更新资源后,两种方法的文本值会有所不同) -
<TextBlock Text="{StaticResource Test}"/> // Will be Ala ma kota
<TextBlock Text="{DynamicResource Test}"/> // Will be Ala ma kota updated
答案 2 :(得分:1)
您必须为此使用DynamicResource
:
<TextBox FontFamily="{DynamicResource Test}" Margin="135,122,187,180"
Text="test"/>
<Button FontFamily="{DynamicResource Test}" Margin="135,144,329,154"
Content="test"/>
Read on MSDN about DynamicResource:
通过将XAML属性属性的值推迟为对已定义资源的引用来提供该值。该资源的查找行为类似于运行时查找。