Windows phone 8.1 单击列表中的项目时隐藏弹出按钮

Windows phone 8.1 单击列表中的项目时隐藏弹出按钮,windows-phone-8.1,flyout,Windows Phone 8.1,Flyout,他是所有人 我要做的是打开一个带有项目列表(绑定到ViewModel中的集合)的弹出型按钮,然后,当用户选择列表中的任何项目时,该弹出型按钮应隐藏。为了实现这一点,我使用了隐藏弹出按钮的行为。问题是,当我点击已经选中的项目(当前选中的项目)时,该行为不起作用 我有以下代码 <Button.Flyout> <Flyout Placement="Full"> <interactivity:Inter

他是所有人
我要做的是打开一个带有项目列表(绑定到ViewModel中的集合)的弹出型按钮,然后,当用户选择列表中的任何项目时,该弹出型按钮应隐藏。为了实现这一点,我使用了隐藏弹出按钮的行为。问题是,当我点击已经选中的项目(当前选中的项目)时,该行为不起作用

我有以下代码

        <Button.Flyout>
            <Flyout Placement="Full">
                <interactivity:Interaction.Behaviors>
                    <core:DataTriggerBehavior Binding="{Binding SelectedCategory}"
                                              ComparisonCondition="NotEqual">
                        <controls:CloseFlyoutAction />
                    </core:DataTriggerBehavior>
                </interactivity:Interaction.Behaviors>
                <ListView ItemsSource="{Binding Source={StaticResource GroupedCategories}}"
                          SelectedItem="{Binding SelectedCategory, Mode=TwoWay}">
                    <ListView.GroupStyle>
                        <GroupStyle>
                           //... skiped for brevity
                        </GroupStyle>
                    </ListView.GroupStyle>
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <ContentControl Foreground="{Binding IsSelected, Converter={StaticResource ForegroundConverter}}"
                                            Content="{Binding Name}" />
                        </DataTemplate>
                    </ListView.ItemTemplate>
                </ListView>
            </Flyout>
        </Button.Flyout>

//... 略过

可能是因为ComparisonCondition设置为NotEqual,而选择已选择的类别意味着这两个类别相等。对吧?我想过了。可能这就是原因。我想出了命名弹出按钮的解决方案,在代码后面创建点击事件处理程序,并将弹出按钮隐藏在那里……但根据MVVM,这不是一个理想的解决方案。好吧,不使用点击事件处理程序,您可以使用EventToCommandBehavior,并在您的VM中包含命令的代码,这会让MVVM先生非常高兴:-)MVVM用于管理数据和绑定,添加一个用于操作UI的事件处理程序没有错:)