Нужен совет с получением визуальных состояний для полноценной работы в коде - PullRequest
0 голосов
/ 29 марта 2019

В моем приложении UWP я создаю все элементы управления в коде (без XAML). Нужно заставить мое приложение реагировать на изменение размера окна. Наткнулся на визуальные состояния и пытался проверить изменение цвета фона моего элемента управления Grid в данный момент в зависимости от ширины окна. Это то, что у меня так далеко, но ничего не происходит:

Dim visualStates = New VisualStateGroup()
Dim horiVisualState = New VisualState()

horiVisualState.Setters.Add(New Setter() With {.Target = New TargetPropertyPath(BackgroundProperty) With {.Target = grid2}, .Value = New SolidColorBrush(Windows.UI.Colors.Orange)})

horiVisualState.StateTriggers.Add(New AdaptiveTrigger() With {.MinWindowWidth = 800})

visualStates.States.Add(horiVisualState)
VisualStateManager.GetVisualStateGroups(Me).Add(visualStates)

grid2 - это сетка, которая является дочерней по отношению к другой сетке, «Я» относится к основной сетке.

1 Ответ

0 голосов
/ 01 апреля 2019

Необходимо убедиться, что сетка «Я» является корневой панелью всех других дочерних элементов пользовательского интерфейса на странице XAML, как показано ниже:

<Page
x:Class="AppAdaptive.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:AppAdaptive"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

<Grid x:Name="Me">
</Grid>

Dim grid2 As Grid = New Grid() With {.Width = 200, .Background = New SolidColorBrush(Colors.Black)}
[Me].Children.Add(grid2)
Dim visualStateGroup = New VisualStateGroup()
Dim horiVisualState = New VisualState()
horiVisualState.Setters.Add(New Setter() With {.Target = New TargetPropertyPath() With {.Target = grid2, .Path = New PropertyPath("Background")}, .Value = New SolidColorBrush(Windows.UI.Colors.Orange)})
horiVisualState.StateTriggers.Add(New AdaptiveTrigger() With {.MinWindowWidth = 800})
visualStateGroup.States.Add(horiVisualState)
VisualStateManager.GetVisualStateGroups(Me).Add(visualStateGroup)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...