Вы можете использовать IValueConverter для выполнения этой операции.
public class BrandColorConverter : IValueConverter
{
public Dictionary<String, Brush> Brands = new Dictionary<string, Brush>()
{
{ "brand1", Brushes.Red },
{ "brand2", Brushes.Blue }
};
public object Convert(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
if (!(value is BusService))
return Binding.DoNothing;
var busService = (BusService)value;
if (!Brands.ContainsKey(busService.BrandName))
return Binding.DoNothing;
return Brands[busService.BrandName];
}
public object ConvertBack(object value, Type targetType, object parameter,
System.Globalization.CultureInfo culture)
{
throw new NotSupportedException();
}
}
В xaml добавьте его как статический ресурс:
<Window.Resources>
<local:BrandColorConverter x:Key="BrandColorConverter"/>
</Window.Resources>
И используйте это в своей кнопке:
<Button Tag="{Binding ServiceNumber}"
Background="{Binding Converter={StaticResource BrandColorConverter}}"
Height="50"
Click="ButtonCl"/>
Эта привязка переходит к текущему элементу, поэтому весь объект BusService будет передан преобразователю.
Надеюсь, это решит вашу проблему.
Я бы настоятельно рекомендовал вам ознакомиться с шаблоном MVVM, если вы собираетесь использовать WPF с привязкой данных, поскольку это значительно упрощает работу.