У меня есть страница XAML UWP, которая определяет GridView. Каждый отдельный элемент GridView представляет собой сетку. Что-то вроде этого:
<GridView Name="TheGridView" ItemsSource="{x:Bind stuff}">
<GridView.ItemTemplate>
<DataTemplate x:DataType="more stuff">
<Grid Background="{StaticResource TheBlackColor}">
...stuff here...
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
Я хотел бы изменить цвет фона сетки для элемента при наведении указателя мыши на него (с TheBlackColor на что-то другое). Я знаю, что могу поместить события PointerEntered и PointerExited в сетку, а затем в свой код позади я могу установить свойство background, но это похоже на то, для чего предназначен VisualStateManager.
Однако я не могу понять, как заставить VisualStateManager работать для этого. Если я определяю визуальные состояния в XAML, я предполагаю, что все равно подключусь к событиям PointerEntered и PointerExited в Grid, но в моем коде позади я бы вызвал GoToState для переключения состояний. Однако я не знаю, как сообщить GoToState, для какого элемента в дереве XAML необходимо изменить визуальное состояние. Я бы подумал, что просто передал бы зависший элемент сетки первому параметру GoToState (он был дан мне как «отправитель» в моем событии PointerEntered) - за исключением того, что я не могу, потому что первый параметр GoToState - это элемент управления и Сетка не является производным от Control.