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的事件处理程序没有错:)