Простой способ - использовать преобразователь значений. По сути, это класс, который позволяет вам связывать значение в вашем BusinessObject, и в зависимости от того, что это значение, вы возвращаете другую кисть.
Здесь - пример, показывающий, как именно это сделать.
[ValueConversion(typeof(States), typeof(Brush))]
public class ColorConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
/* return a different brush depending on the state */
}
}
Затем вы связываете это так:
<Ellipse Fill="{Binding State, Converter={StaticResource colorConverter} />
Посмотрите приведенную выше ссылку, чтобы увидеть полный пример.
Преимущество этого способа перед ответом Рэйчел в том, что это общая реализация, поэтому вам не нужно создавать шаблон для каждой из ваших фигур, если вы хотите, чтобы это применялось к различным объектам (прямоугольник, эллипс и т. Д. ...). Но ответ Рэйчел - то есть использование шаблона, тоже хорош, потому что он не требует никакого кода.