在代码中设置静态资源我的App.xaml文件有几种样式:我想在mainpage.xaml.cs的代码中更改BackgroundProperty。我试过使用这个:Stylestyle=Application.Current.Resources["stackpanelBackground"]asStyle;style.Setters.SetValue(StackPanel.BackgroundProperty,"{StaticResourcestyleRed}");但是我得到了一个灾难性的失败异常。我认为这与{StaticResourcestyleRed}有关。有没有更好的办法?StaticResource是静态的。应用程序编译后您无法更改它们。为此,有DynamicResource:DynamicResource将在初始编译期间创建临时表达式,从而推迟查找资源,直到实际需要请求的资源值才能构造对象。另请注意,您可以使用FindResource更好地查找对其他资源的引用。尝试这样的事情(完整的工作示例):在MainPage.xaml中:在MainPage.xaml.cs中:样式样式=this.FindResource("abc")asStyle;varr=this.FindResource("styleRed");foreach(style.Setters中的Setters){if(s.Property==StackPanel.BackgroundProperty){s.Value=r;为什么要修改样式而不是直接设置目标StackPanel的Background-Property?由于'Localvalue'优先于'Stylesetters',您将使用从代码背后写入Background的值意味着:(1)给你的stackpanelx:Name=“spBla”(2)将画笔分配给BackgroundtospBla(类似于spBla.Background=Application.Current.Resources["styleRed"]asSolidColorBrush;)您可以在此处了解有关值优先级的更多信息:http://msdn.microsoft.com/en-us/library/ms743230(v=vs.110).aspx如果我理解正确,你想设置一个只允许你更改特定堆栈面板的样式,这样你就不必全部设置它们。试试这个建议(注意:这是一个建议,我没有测试过,但希望它是在正确的方向上)或者尝试使用TemplateBinding而不是Binding,就像我说的这是一个建议但我没有测试过。这将为您提供背景绑定,以及没有设置背景颜色的堆栈面板的回退值。如果这对你有用,请告诉我:)以上就是C#学习教程:在代码中设置静态资源共享的全部内容。网络收藏不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
