Вопрос

Я использую Windows Phone.Проблема в том, что это не имеет тот Color.FromName вместо этого у него есть Color.FromArgb.

У меня есть прямоугольник, и я хочу установить цвет его заливки в зависимости от цвета читаемого файла.напримерЯ сохранил «Красный» в файле цвета.Я прочитал это и отправил в строку с именем LpColor теперь внутри будет находиться текст «Красный».

Теперь, как мне использовать LpColor в Rectangle.Fill = ....Выполнение Rectangle.Fill = LpColor не сработает.

Это код того, как я читаю свой файл:

IsolatedStorageFileStream readColor = store.OpenFile("/contactColor.txt", FileMode.Open, FileAccess.Read);
using (StreamReader contactColor = new StreamReader(readColor))
{
  var color = contactColor.ReadToEnd();
  LpColor = color;
}
Это было полезно?

Решение

Если вам необходимо сохранить его как строку (красный), вы можете написать метод конвертера, который преобразует строку обратно в цвет.В зависимости от того, сколько цветов у вас есть, сложность метода будет расти, поэтому вам, возможно, захочется переосмыслить сохранение цвета как имени — возможно, вы могли бы сохранить его как комбинацию ARGB и имени?Использовать класс для хранения этой информации?Есть много-много вариантов.

В любом случае ваш простой конвертер будет делать что-то вроде этого:

private SolidColorBrush ColorNameToBrush(string colorName)
{
    Color color = Color.FromArgb(0,0,0,0);
    if (colorName == "Red")
    {
        color = new Color() { R = 255, G = 0, B = 0};
    }
    else if ...
    {

    }

    return new SolidColorBrush(color);
}

Однако использование оператора switch вместо бесконечного if-else-if может быть лучшей идеей, если у вас много строк.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top