Стиль инициировал в Silverlight

Очень хороший видео вводный ход Стэнфордским университетом (никакие требуемые предварительные знания):

Методология программирования

будет преподавать Вам хорошие "методологии", которые каждый программист должен знать и некоторое программирование Java.

5
задан Ian Hannah 23 November 2009 в 08:31
поделиться

1 ответ

Конвертер пользовательских значений достигнет той же цели.

 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 в ресурсе страницы и использовать обычный сокращенный синтаксис привязки.

13
ответ дан 18 December 2019 в 14:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: