Во-первых, заменой триггеров в Silverlight является VisualStateManager.VSM на самом деле намного более мощный, чем триггеры, так как он позволяет вам выполнять StoryBoard при изменении состояния.
Если вам не нужна анимация в вашей ситуации, я бы решил, что для ее решения будет использоватьсяIValueConverter.Создайте границу в DataTemplate и привяжите фоновую кисть к свойству DataItem, которое вы хотите использовать для изменения фоновой кисти.
public class BrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
value.ToString() == "Red" ? new SolidColorBrush(Color.Red) : SolidColorBrush(Color.Blue);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedExcpetion();
}
}
Затем ваш XAML будет выглядеть примерно так:
<Border Background={Binding InterestingProperty,Converter={StaticResource BrushConverter}} />
Если вам действительно нужна анимация, то вы захотите прочитать в VisualStateManager.По сути, вы должны создать Templated или UserControl со свойством зависимости, а затем при изменении этого свойства определить, в каком состоянии должен находиться элемент управления, и вызвать диспетчер визуальных состояний.Синтаксис что-то вроде
VisualStateManager.GoToVisualState(yourControlInstance,"TheState",boolUseTransitions);