如何从XAML中绑定或访问c#类中定义的颜色

本文关键字:定义 颜色 访问 XAML 绑定 | 更新日期: 2023-09-27 18:14:57

定义一个对象在。cs和。xaml文件中使用的正确方法是什么?例如,我在"constants.cs"类中定义了自定义颜色和笔刷:

using System.Windows.Media;
namespace MyProject
{
    public static class Constants
    {
        public static Color MyBlue = Color.FromArgb(255, 35, 97, 146);
        public static SolidColorBrush MyBlueBrush = new SolidColorBrush(MyBlue);
    }
}

,我想在。xaml或。cs文件中使用MyBlue或MyBlueBrush。

我可以像这样在。cs文件中设置颜色:

namespace MyProject
{
    public partial class MyColorWindow : Window
    {
        public MyColorWindow()
        {
            InitializeComponent();
            btnOne.Background = Constants.MyBlueBrush;
        }
    }
}

但是我如何在XAML文件中得到它呢?例如,我在下面的代码中添加什么来访问MyBlueBrush?

<Window x:Class="MyProject.MyColorWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MyColorWindow" Height="300" Width="300">
    <Grid>
    <Button Name="btnOne" Background="Purple" Margin="0,32,0,185" />
    <Button Name="btnTwo" Background="Orange" Margin="0,132,0,85" />  <!-- I want this background to be MyBlueBrush too -->
  </Grid>
</Window>

如何从XAML中绑定或访问c#类中定义的颜色

只能绑定属性,不能绑定字段。

为了从XAML绑定,您需要将静态成员转换为属性。

一旦你这样做了,你可以通过x:静态标记扩展绑定到它们,即:
<Button Name="btnTwo" 
    Background="{x:Static my:Constants.MyBlueBrush}" 
    Margin="0,132,0,85" />  

(注意,这也需要将"MyProject"名称空间映射为"my")