如何在xaml中定义和使用资源,以便它们可以在C#中使用

从理论上讲,我认为我可以在xaml文件中定义画笔和颜色等,并将其分配给c#中的button.background。 但是我该怎么做? 我在哪里放置如下的lineargradientbrush定义:

    

只是将它放在我窗口的xaml文件中的不同位置会导致各种错误消息:/

我在stackoverflow上找到了这个问题: 如何在XAML中使用定义的画笔资源,从C#中解释其中的一部分,但他似乎知道在哪里做画笔定义。

我还尝试将shinyblue.xaml wpf模板添加到应用程序中,并将到app.xaml中的application.resources。 这使得我的所有按钮立即变为蓝色,但是,仍然可以从C#中访问shinyBlue.xaml中定义的像“NormalBrush”这样的“东西” – 至少我不知道如何。

你的xaml看起来像这样:

MainWindow.xaml

                       

要分配值,您需要从以下资源中获取渐变画笔:

MainWindow.xaml.cs

 private void myButton_Click(object sender, RoutedEventArgs e) { (sender as Button).Background = this.Resources["BrushOne"] as LinearGradientBrush; } 

请注意,现有的答案谈到将资源放在Window.Resources中。 如果您希望资源在应用程序范围内可用,您可以考虑将它们放在App.xaml中或更好,创建可以包含在视图中并在其他地方重复使用的独立资源字典(包括其他项目)

         

将它们放在XAML中您的一个元素的Resources集合中:

           

然后使用FindResource在代码中获取它们

 var blaBrush = this.FindResource("BlaBrush") as LinearGradientBrush; 

有关更多信息,请参阅参考资料

您可以访问应用程序资源

 Application.Current.Resources["BlaBrush"] as LinearGradientBrush 

或者,您将资源添加到控件的资源中,并像Quartermeister写的那样访问它们。