如何在单击其内容时关闭以下弹出窗口?
<Button Name="myButton" Content="Hover to open" />
<Popup PlacementTarget="{Binding ElementName=myButton}" Placement="Bottom">
<Popup.Resources>
<DataConversion:BooleanOrConverter x:Key="booleanOrConverter" />
</Popup.Resources>
<Popup.IsOpen>
<MultiBinding Mode="OneWay" Converter="{StaticResource booleanOrConverter}">
<Binding Mode="OneWay" ElementName="myButton" Path="IsMouseOver"/>
<Binding RelativeSource="{RelativeSource Self}" Path="IsMouseOver" />
</MultiBinding>
</Popup.IsOpen>
<!-- some content here -->
</Popup>
我想避免在代码隐藏文件中编写代码,并将视觉和行为方面的东西(如IsOpen属性或MouseDown事件)绑定到ViewModel。
答案 0 :(得分:2)
您需要在EventTrigger
上Popup
触发一个包含BooleanAnimationUsingKeyFrames
的{{1}}的故事板,其中IsOpen
设置为false
,similar to this。更容易使用代码隐藏; o)
答案 1 :(得分:2)
您可以将Popup.Child
设为Button
(将其设置为不一样),处理其Click
事件并将IsOpen
设置为false
(最好使用SetCurrentValue
来破坏绑定)。
您可以在后面的代码中执行此操作,也可以使用行为/触发器操作。