несколько вопросов по Xaml Visualstate, созданному скопированным шаблоном в UWP - PullRequest
0 голосов
/ 12 октября 2018

У меня мало вопросов о visualstate, созданном скопированным шаблоном в UWP.
Я просто делаю NavigationView, ниже приведен его исходный код.

<NavigationView Style="{StaticResource NavigationViewStyle1}"
    x:Name="navigationView"
    SelectedItem="{x:Bind ViewModel.Selected, Mode=OneWay}"
    Header="{x:Bind ViewModel.Selected.Content, Mode=OneWay}"
    IsSettingsVisible="False"
    Background="{ThemeResource SystemControlBackgroundAltHighBrush}"> ..omitted

и я щелкнул правой кнопкой мыши NavigationView в режиме конструктора и щелкнул Изменить шаблон и щелкнул изменить копию (не уверен в названии, потому что мой визуальныйстудийные шоу на корейском).

Как известно, тогда создается словарь дизайна.Я пытаюсь быть знакомым с этим, редактируя некоторые части этого.А потом я удивился, почему существует группа TogglePaneButtonCollapsed visualstate.Я приведу пример, чтобы помочь вам понять.

Во-первых, я думаю, что должен написать код XAML.Я заинтересован в TogglePaneButtonCollapsed VisualState из TogglePaneGroup.

<Style x:Key="NavigationViewStyle1" TargetType="NavigationView">
    <Setter Property="PaneToggleButtonStyle"
            Value="{StaticResource PaneToggleButtonStyle}"/>
    <Setter Property="IsTabStop"
            Value="False"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="NavigationView">
                <Grid x:Name="RootGrid">
                    <VisualStateManager.VisualStateGroups>
                        <VisualStateGroup x:Name="DisplayModeGroup">
                            <VisualState x:Name="Compact"/>
                            <VisualState x:Name="Expanded">
                                <VisualState.Setters>
                                    <Setter Target="TogglePaneButton.Visibility" Value="Collapsed"/> <!-- I added-->
                                </VisualState.Setters>
                            </VisualState>
                            <VisualState x:Name="Minimal">
                                <VisualState.Setters>
                                    <Setter Target="HeaderContent.Margin" Value="48,5,0,0"/>
                                    <Setter Target="TogglePaneButton.Visibility" Value="Collapsed"/> <!-- I added-->
                                </VisualState.Setters>
                            </VisualState>
                            <VisualState x:Name="MinimalWithBackButton">
                                <VisualState.Setters>
                                    <Setter Target="HeaderContent.Margin" Value="104,5,0,0"/>
                                </VisualState.Setters>
                            </VisualState>
                        </VisualStateGroup>
                        <VisualStateGroup x:Name="TogglePaneGroup">
                            <VisualState x:Name="TogglePaneButtonVisible">
                                <VisualState.Setters>
                                    <Setter Target="PaneContentGridToggleButtonRow.Height" Value="200"/>
                                </VisualState.Setters>
                            </VisualState>
                            <VisualState x:Name="TogglePaneButtonCollapsed">
                                <VisualState.Setters>
                                    <Setter Target="TogglePaneButton.Visibility" Value="Collapsed"/>
                                    <Setter Target="PaneContentGridToggleButtonRow.Height" Value="2000"/>
                                </VisualState.Setters>
                            </VisualState>
                        </VisualStateGroup> .. omitted

Интересно, когда TogglePaneButtonCollapsed работает.Я сделал размер окна App меньше и больше, но ни один из них не установил триггеры TogglePaneButtonCollapsed ("make Toggle ButtonRow. Height == 2000").Я добавил код в Expaned и Minimal в DisplayModegroup, чтобы сделать видимость TogglePaneButton свернутой.Но он имеет высоту только 200 пикселей, как определено в TogglePaneButtonVisible.не 2000 px Высота.

200 px, not 2000 px

Насколько мне известно, в этом файле словаря нет триггера VisualState, а код триггера VisualState скрыт от разработчиков.правильно? ... и разработчик должен соблюдать имя Visualstate Group и VisualState.

, тогда последний вопрос: почему существует TogglePaneButtonCollapsed Визуальное состояние и как я использую его без определения визуального триггера состояния?можно перегрузить курок?Спасибо за чтение моего поста.

1 Ответ

0 голосов
/ 15 октября 2018

В этом файле словаря нет триггера VisualState, а код триггера VisualState скрыт от разработчиков, я прав? ... и разработчик должен соблюдать имя группы Visualstate и VisualState.

Да.Визуальное состояние по умолчанию контролируется им самим (вы можете думать о нем как о его программном коде, но поскольку UWP не имеет открытого источника, поэтому вы не можете его видеть).Вы не можете изменить его имя или удалить эти визуальные состояния по умолчанию.

Почему существует визуальное состояние TogglePaneButtonCollapsed и как его использовать без определения визуального триггера состояния?можно перегрузить курок?Спасибо, что прочитали мой пост.

Это умышленно.Вы можете использовать VisualStateManager.GoToState (Control, String, Boolean) Метод для преобразования элемента управления между двумя состояниями.

...