Как связать или получить доступ к цвету, определенному в классе C # из XAML? - PullRequest
3 голосов
/ 16 ноября 2011

Как правильно определить объект для использования в файлах .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);
    }
}

, и я хочу использовать MyBlue или MyBlueBrush в файлах .xaml или .cs.

Я могу получить цвет в файлах .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>

1 Ответ

3 голосов
/ 16 ноября 2011

Вы можете привязывать только свойства, а не поля.

Чтобы выполнить привязку из XAML, вам необходимо преобразовать статические члены в свойства.

Как только вы это сделаете, вы можете связать их с помощью x: статического расширения разметки , то есть:

<Button Name="btnTwo" 
    Background="{x:Static my:Constants.MyBlueBrush}" 
    Margin="0,132,0,85" />  

(Обратите внимание, что для этого требуется сопоставление xmlns для пространства имен «MyProject» и «my».)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...