Приложение на C# + WPF
Имеется 8 лейблов и 20 шрифтов
При загрузке программы берутся названия шрифтов из файла settings и в зависимости от названий шрифтов каждому лейблу присваивается соответствующий шрифт
У меня есть условия if else, всё работает, вот только кода получается ооочень много, хотелось бы рефакторинг сделать, и сделать так,чтобы кода было меньше каким-то другим способом
Как это можно сделать?//переменные в которые помещаются названия шрифтов для каждого лейбла
var fontCategory1 = Settings.Default.LabelCategoryFont1;
var fontCategory2 = Settings.Default.LabelCategoryFont2;
var fontCategory3 = Settings.Default.LabelCategoryFont3;
var fontCategory4 = Settings.Default.LabelCategoryFont4;
var fontCategory5 = Settings.Default.LabelCategoryFont5;
var fontCategory6 = Settings.Default.LabelCategoryFont6;
var fontCategory7 = Settings.Default.LabelCategoryFont7;
var fontCategory8 = Settings.Default.LabelCategoryFont8;
условия, в которых в зависимости от названия шрифта, присваивается шрифт каждому лейблу.Здесь условия всего для двух лейблов и двух шрифтов, а всего лейблов будет 8 и 20 шрифтов, можно представить какая это будет портянка не эффективная с условиями if
if (fontCategory1 == "Heron Sans Light")
{
ApplyFontProperties(CategoryLabel1, new FontFamily("HeronSans"), FontWeights.Light,
FontStyles.Normal);
}
if (fontCategory2 == "Heron Sans Light")
{
ApplyFontProperties(CategoryLabel2, new FontFamily("HeronSans"), FontWeights.Light,
FontStyles.Normal);
}
if (fontCategory1 == "Heron Sans Bold")
{
ApplyFontProperties(CategoryLabel1, new FontFamily("HeronSans"), FontWeights.Bold,
FontStyles.Normal);
}
if (fontCategory2 == "Heron Sans Bold")
{
ApplyFontProperties(CategoryLabel2, new FontFamily("HeronSans"), FontWeights.Bold,
FontStyles.Normal);
}
Метод ApplyFontProperties присвает каждому лейблу шрифт и стили, в зависимости от того, какой лейбл поступил на вход:
private void ApplyFontProperties(Label label, FontFamily fontFamily, FontWeight fontWeight, FontStyle fontStyle)
{
if (label == CategoryLabel1)
{
CategoryLabel1.FontFamily = fontFamily;
CategoryLabel1.FontStyle = fontStyle;
CategoryLabel1.FontWeight = fontWeight;
}
if (label == CategoryLabel2)
{
CategoryLabel2.FontFamily = fontFamily;
CategoryLabel2.FontStyle = fontStyle;
CategoryLabel2.FontWeight = fontWeight;
}
if (label == CategoryLabel3)
{
CategoryLabel3.FontFamily = fontFamily;
CategoryLabel3.FontStyle = fontStyle;
CategoryLabel3.FontWeight = fontWeight;
}
if (label == CategoryLabel4)
{
CategoryLabel4.FontFamily = fontFamily;
CategoryLabel4.FontStyle = fontStyle;
CategoryLabel4.FontWeight = fontWeight;
}
if (label == CategoryLabel5)
{
CategoryLabel5.FontFamily = fontFamily;
CategoryLabel5.FontStyle = fontStyle;
CategoryLabel5.FontWeight = fontWeight;
}
if (label == CategoryLabel6)
{
CategoryLabel6.FontFamily = fontFamily;
CategoryLabel6.FontStyle = fontStyle;
CategoryLabel6.FontWeight = fontWeight;
}
if (label == CategoryLabel7)
{
CategoryLabel7.FontFamily = fontFamily;
CategoryLabel7.FontStyle = fontStyle;
CategoryLabel7.FontWeight = fontWeight;
}
if (label == CategoryLabel8)
{
CategoryLabel8.FontFamily = fontFamily;
CategoryLabel8.FontStyle = fontStyle;
CategoryLabel8.FontWeight = fontWeight;
}
Файл settings, в котором хранятся названия шрифтов. Формат данных string:
<setting name="LabelCategoryFont1" serializeAs="String">
<value>Heron Sans Light</value>
</setting>
<setting name="LabelCategoryFont2" serializeAs="String">
<value>Heron Sans Bold</value>
</setting>