Как настроить конвертер для возврата свойств из шаблона
Я делаю стиль для пользовательского элемента управления, который может быть одним из двух цветов.
Мои свойства моего элемента управления: { SolidColorBrush color1, SolidColorBrush color2, bool usingColor1}.
Я пытаюсь сделать конвертер, который будет привязан к usingColor1 и вернет либо color1, либо color2. Я хотел бы определить мой конвертер так:
<Style.Resources>
<Converters:ValueParameterComparisonConverter x:Key="Color1WhenTrue" ValueWhenEqual="{DataTemplateKey Color1}" ValueWhenNotEqual="{DataTemplateKey Color2}"/>
</Style.Resources>
И используйте мой конвертер так:
<Border Background="{TemplateBinding UsingColor1, Converter={StaticResource Color1WhenTrue}}" />
Я реализовал это в моем коде, и он не работает. Я не понимаю, что делает DataTemplateKey, и не думаю, что это правильное слово для этого сценария.
Как настроить конвертер для возврата свойств из моего шаблона?
Редактировать:
Вот интересная часть кода конвертера:
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
bool isEqual;
if (value == null)
{
isEqual = null == parameter;
}
else
{
isEqual = value.Equals(parameter);
}
return isEqual ? this.ValueWhenEqual : this.ValueWhenNotEqual;
}
1 ответ
Вы можете избавиться от параметров valueWhenEqual;
<Style.Resources>
<Converters:ValueParameterComparisonConverter x:Key="Color1WhenTrue"/>
</Style.Resources>
Просто используйте привязку, а не привязку шаблона;
<Border Background="{Binding UsingColor1, Converter={StaticResource Color1WhenTrue}}" />
Затем измените конвертер, чтобы он возвращал нужный вам цвет, если он истинный, и другой цвет, если он ложный;
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var usingColor1 = (bool)value;
return usingColor1 ? new SolidColorBrush(Color.FromRgb(179, 255, 179)) : new SolidColorBrush(Color.FromRgb(255, 100, 0));
}
Очевидно, вам нужно изменить цвета, используемые в приведенном мной примере.