Если вы хотите изменить цвет фона Border при наведении мыши, вы можете использовать VisualStateManager, чтобы изменить его. Вам нужно вызвать метод VisualStateManager.GoToState()
в коде в ответ на событие PointerEnter и активировать «PointerOver» в визуальном состоянии. Кроме того, состояния VisualStateManager обычно применяются к элементам управления (производным от Windows .UI.Xaml.Control.Controls), но Border не является производным от Control. Так что лучше поместить Border в пользовательский контроль. Например:
MainPage.xaml:
<Grid>
<UserControl PointerEntered="Border_PointerEntered" PointerExited="Border_PointerExited" x:Name="MyControl">
<Border x:Name="MyBorder" Height="30" VerticalAlignment="Top" Margin="50,0" Background="Red">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Normal">
<VisualState.Setters>
<Setter Target="MyBorder.Background" Value="Red"></Setter>
</VisualState.Setters>
</VisualState>
<VisualState x:Name="PointerOver">
<VisualState.Setters>
<Setter Target="MyBorder.Background" Value="Green"></Setter>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Border>
</UserControl>
</Grid>
MainPage.xaml.cs:
private void Border_PointerEntered(object sender, PointerRoutedEventArgs e)
{
VisualStateManager.GoToState(MyControl, "PointerOver", false);
}
private void Border_PointerExited(object sender, PointerRoutedEventArgs e)
{
VisualStateManager.GoToState(MyControl, "Normal", false);
}
Обновление:
Вы можете напрямую подписаться на события PointerEntered и PointerExited в Border, а затем изменить фон в этих событиях без использования userControl.
.xaml:
<Grid>
<Border x:Name="MyBorder" Height="30" VerticalAlignment="Top" Margin="50,0" Background="Red" PointerEntered="Border_PointerEntered" PointerExited="Border_PointerExited">
</Border>
</Grid>
.cs:
private void Border_PointerEntered(object sender, PointerRoutedEventArgs e)
{
MyBorder.Background = new SolidColorBrush(Colors.Green);
}
private void Border_PointerExited(object sender, PointerRoutedEventArgs e)
{
MyBorder.Background = new SolidColorBrush(Colors.Red);
}