Interaction.Behaviors не работает в SplitView?

Я использую SplitView для своей страницы XAML. Внутри SplitView поведение триггера не работает.

Например:

<SplitView.Content>
 <Grid>
  <Button x:Name="Button">
    <Interactivity:Interaction.Behaviors>
      <Core:EventTriggerBehavior EventName="Click" >
         <Core:GoToStateAction StateName="SplitViewState />
      </Core:EventTriggerBehavior>
    </Interactivity:Interaction.Behaviors>
  </Button>

 </Grid>
</SplitView.Content>

При нажатии на кнопку ничего не происходит. Он работает с элементами за пределами SplitView.


person user5902075    schedule 15.02.2016    source источник


Ответы (1)


Я думаю, вы пропустили значение установки TargetObject.

<Button Content="click me"
        HorizontalAlignment="Center"
        VerticalAlignment="Center">
    <I:Interaction.Behaviors>
        <Core:EventTriggerBehavior EventName="Click" >
            <Core:GoToStateAction TargetObject="{Binding ElementName=MySplitView}"
                                  StateName="OpenOverlayLeft"/>
        </Core:EventTriggerBehavior>
    </I:Interaction.Behaviors>
</Button>

ОБНОВЛЕНО

Посмотрите на поведение с 4 кнопками, расположенными внутри SplitView.Content, SplitView.Pane и снаружи. Все работает очень хорошо.

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <SplitView x:Name="MySplitView"
               PaneBackground="Gray"
               DisplayMode="CompactOverlay"
               IsPaneOpen="True"
               CompactPaneLength="50"
               OpenPaneLength="280">
        <SplitView.Pane>
            <Grid>
                <Button Content="close inside"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center">
                    <i:Interaction.Behaviors>
                        <core:EventTriggerBehavior EventName="Click" >
                            <core:GoToStateAction TargetObject="{Binding ElementName=MySplitView}"
                                                  StateName="Closed"/>
                        </core:EventTriggerBehavior>
                    </i:Interaction.Behaviors>
                </Button>
            </Grid>
        </SplitView.Pane>

        <SplitView.Content>
            <Grid>
                <Button Content="open inside"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center">
                    <i:Interaction.Behaviors>
                        <core:EventTriggerBehavior EventName="Click">
                            <core:GoToStateAction TargetObject="{Binding ElementName=MySplitView}"
                                                  StateName="OpenOverlayLeft"/>
                        </core:EventTriggerBehavior>
                    </i:Interaction.Behaviors>
                </Button>
            </Grid>
        </SplitView.Content>

    </SplitView>

    <Grid Grid.Column="1"
          Background="Aquamarine">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Button Content="open outside"
                HorizontalAlignment="Center"
                VerticalAlignment="Center">
            <i:Interaction.Behaviors>
                <core:EventTriggerBehavior EventName="Click">
                    <core:GoToStateAction TargetObject="{Binding ElementName=MySplitView}"
                                          StateName="OpenOverlayLeft"/>
                </core:EventTriggerBehavior>
            </i:Interaction.Behaviors>
        </Button>

        <Button Content="close outside"
                Grid.Column="1"
                        HorizontalAlignment="Center"
                        VerticalAlignment="Center">
            <i:Interaction.Behaviors>
                <core:EventTriggerBehavior EventName="Click" >
                    <core:GoToStateAction TargetObject="{Binding ElementName=MySplitView}"
                                          StateName="Closed"/>
                </core:EventTriggerBehavior>
            </i:Interaction.Behaviors>
        </Button>
    </Grid>
</Grid>

Посмотрите, как это работает:

введите здесь описание изображения

person Andrii Krupka    schedule 18.02.2016
comment
Ваша кнопка находится внутри SplitView (содержимое или панель не имеет значения) или просто в сетке? потому что та же команда работает, если кнопка находится внутри простой сетки, но не работает, если кнопка находится внутри разделенного просмотра (или сетки внутри разделенного просмотра). У меня есть визуальное состояние SplitViewState внутри VisualStateGroup, и я хочу перейти в это состояние. Целевой объект — VisualStateGroup? - person user5902075; 19.02.2016
comment
решается путем удаления SplitView и использования гамбургера из Template10 - person user5902075; 02.03.2016