Итак, я недавно был расстроен с вызовом скопировать этот эффект:Простой эффект зависания в XAML?
<style>
a:hover {background-color:yellow; }
</style>
Использование реализации XAML в WinRT.
Какое наиболее концентрированное решение?
Итак, я недавно был расстроен с вызовом скопировать этот эффект:Простой эффект зависания в XAML?
<style>
a:hover {background-color:yellow; }
</style>
Использование реализации XAML в WinRT.
Какое наиболее концентрированное решение?
Итак, вот моя попытка:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="VisualStateGroup">
<VisualState x:Name="Normal"/>
<VisualState x:Name="Hover">
<Storyboard>
<ColorAnimation To="Yellow" Duration="0"
Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"
Storyboard.TargetName="MyTextBox" />
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Grid x:Name="MyTextBox" Background="White"
PointerEntered="MyTextBox_PointerEntered"
PointerExited="MyTextBox_PointerExited"
Height="114" Width="537">
</Grid>
И это:
private void MyTextBox_PointerEntered(object sender, PointerRoutedEventArgs e)
{
VisualStateManager.GoToState(this, Hover.Name, false);
}
private void MyTextBox_PointerExited(object sender, PointerRoutedEventArgs e)
{
VisualStateManager.GoToState(this, Normal.Name, false);
}
Но, конечно, есть лучший способ!
Я думаю, что вам нужно изучить Визуальные состояния и VisualStateManager. Я думаю, что элемент управления Button является единственным, у которого есть визуальные состояния, то есть ваш визуальный объект должен быть определен как кнопка (хотя он не должен функционировать как один). В нижней части этой статьи вы найдете пример.
This SO-question также может быть полезным, описывая, как извлечь шаблон управления из существующей кнопки. Это даст вам отправную точку, которую вы можете изменить для своих нужд.
Что касается «большинства конденсированных решений», я бы тоже хотел это увидеть. Примеры, которые я видел, все они требуют 20+ строк XAML кода, который мне не чувствует себя очень конденсироваться ...
Нет, я не думаю, что Button является единственным элементом управления с VisualStates. Если вы подтягиваете шаблон Grid, они используют VisualStateManager на главной сетке для управления переходом между FullScreenLandscape, Snapped, Portrait и т. Д. –
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal"/>
<VisualState x:Name="PointerOver">
<Storyboard>
<ColorAnimation To="Yellow" Duration="0"
Storyboard.TargetProperty="(Panel.Background).(SolidColorBrush.Color)"
Storyboard.TargetName="MyTextBox" />
</Storyboard>
</VisualState>
<VisualState x:Name="Pressed"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
Состояние «Наведение» в RT - «PointerOver».
Пройдитесь по этому вопросу, исследуя ситуацию наведения на scrollviewer. Интересное решение. :-) – OmegaMan