Очень хороший видео вводный ход Стэнфордским университетом (никакие требуемые предварительные знания):
будет преподавать Вам хорошие "методологии", которые каждый программист должен знать и некоторое программирование Java.
Конвертер пользовательских значений достигнет той же цели.
public class BoolToBrushConverter : IValueConverter
{
public Brush FalseBrush { get; set; }
public Brush TrueBrush { get; set; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return FalseBrush;
else
return (bool)value ? TrueBrush : FalseBrush;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException("This converter only works for one way binding");
}
}
С помощью этого преобразователя вы можете настроить свой XAML на: -
<Path Canvas.Top="20" Stroke="#FF808080" Data="M 0,20 20,0 40,20 Z" StrokeLineJoin="Round">
<Path.Fill>
<Binding Path="PumpRunning" ElementName="userControl">
<Binding.Converter>
<local:BoolToBrushConverter
FalseBrush="DarkGray" TrueBrush="DarkGreen" />
</Binding.Converter>
</Binding>
</Path.Fill>
</Path>
Обратите внимание, что, поскольку ваш выбор цвета был локальным для вашего определения пути. Я встроил экземпляр Converter непосредственно в определение пути, таким образом достигнув той же семантики.Однако, если вам требуется несколько таких преобразований с использованием одних и тех же парных цветов, вы можете так же легко разместить экземпляр Converter в ресурсе страницы и использовать обычный сокращенный синтаксис привязки.