MultiTrigger выполняется только один раз
Моя кнопка должна менять цвет после определенного количества наведений мыши, однако Multibinding не работает должным образом.
Кнопки в моем приложении имеют следующий стиль:
<Style TargetType="Button">
<EventSetter Event="MouseEnter" Handler="OnMouseEnterButton"/>
<Style.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="Content" Value="0"/>
<Condition Property="IsMouseOver" Value="False"/>
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="Green"/>
</MultiTrigger.Setters>
</MultiTrigger>
</Style.Triggers>
</Style>
Моя кнопка выглядит так:
<Button Name="button1">1</Button>
Со следующим обработчиком событий:
private void OnMouseEnterButton(object sender, RoutedEventArgs e)
{
((Button)sender).Content = (int.Parse(((Button)sender).Content.ToString())) + 1;
}
Однако, если значение условия Button.Content отличается от исходного значения. Например: <Condition Property="Content" Value="10"/>
Триггеры перестают работать.
1 ответ
Решение
Проблема в том, что вы сравниваете System.Int32
значение (устанавливается в коде) с System.String
значение (определяется по условию).
Есть два способа исправить это:
1) Измените условие стиля на:
<Condition Property="Content">
<Condition.Value>
<sys:Int32>10</sys:Int32>
</Condition.Value>
</Condition>
где вы должны добавить пространство имен xmlns:sys="clr-namespace:System;assembly=mscorlib"
или измените свой код на:
((Button)sender).Content = ((int.Parse(((Button)sender).Content.ToString())) + 1).ToString();