Имею в своём приложении стиль для TabItem
, решил использовать VisualStateManager
вместо обычных триггеров. Когда определил состояния Normal
и MouseOver
всё работало нормально. Но после добавления Selected
, Unselected
и VisualStateGroup.Transitions
, при наведении курсора на один из TabItem
-ов, стал получать NullReferenceException
. Подскажите, что я делаю не так?
Стиль, о котором идет речь:
<Style TargetType="{x:Type TabItem}">
<Style.Setters>
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="DimGray" Opacity="0.1"/>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="BorderThickness" Value="0.5"/>
<Setter Property="Height" Value="30"/>
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Width" Value="126"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border x:Name="border"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="0,0,6,6"
Margin="0,0,6,0">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.States>
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)">
<ColorAnimation Duration="0:0:0.1" To="Black"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Selected">
<Storyboard Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.BorderThickness)">
<ThicknessAnimation Duration="0:0:0.1" To="1"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Unselected">
<Storyboard Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.BorderThickness)">
<ThicknessAnimation Duration="0:0:0.1" To="0.5"/>
</Storyboard>
</VisualState>
</VisualStateGroup.States>
<VisualStateGroup.Transitions>
<VisualTransition From="MouseOver" To="Normal">
<Storyboard Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)">
<ColorAnimation Duration="0:0:0.1" To="DimGray"/>
</Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter ContentSource="Header"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
Сам разобрался, вот так работает без ошибок:
<Style TargetType="{x:Type TabItem}">
<Style.Setters>
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="DimGray" Opacity="0.1"/>
</Setter.Value>
</Setter>
<Setter Property="BorderBrush" Value="Black"/>
<Setter Property="BorderThickness" Value="0.5,0,0.5,0.5"/>
<Setter Property="Height" Value="30"/>
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Width" Value="126"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border x:Name="border"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="0,0,6,6"
Margin="0,0,6,0">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualStateGroup.States>
<VisualState x:Name="Normal"/>
<VisualState x:Name="MouseOver">
<Storyboard Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)">
<ColorAnimation Duration="0:0:0.1" To="Black"/>
</Storyboard>
</VisualState>
</VisualStateGroup.States>
</VisualStateGroup>
<VisualStateGroup x:Name="SelectionStates">
<VisualStateGroup.States>
<VisualState x:Name="Selected">
<Storyboard>
<ThicknessAnimation Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.BorderThickness)"
Duration="0:0:0.1"
To="1,0,1,1"/>
<ColorAnimation Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
Duration="0:0:0.1"
To="Black"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Unselected"/>
</VisualStateGroup.States>
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:0.1"
From="Selected"
To="Unselected">
<Storyboard>
<ThicknessAnimation Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.BorderThickness)"
Duration="0:0:0.1"
To="0.5,0,0.5,0.5"/>
<ColorAnimation Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
Duration="0:0:0.1"
To="DimGray"/>
</Storyboard>
</VisualTransition>
</VisualStateGroup.Transitions>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter ContentSource="Header"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Доброго времени суток! Возникла необходимость парсить почту на Gmail`еПодскажите пожалуйста средства для подобной реализации
При выполнении кода (вызываю скрытое окно Word в котором пересохраняю файлы в другом формате) в момент открытия Word'ом очередного файла, у текущего...
Всем приветВозникли проблемы (если быть точнее, то совсем не понимаю) с загрузкой и редактированием изображения
Подскажите, пожалуйста, пример реализации передвижения по path нескольких объектов (у меня они нарисованы в canvas,это массив из 10-ти банальных...