我使用Checkbox和Popup创建了一个类似菜单的UI。
<CheckBox Name="Menu" />
<Popup Placement="Top" PlacementTarget="{Binding ElementName=Menu}" IsOpen="{Binding ElementName=Menu, Path=IsChecked}" AllowsTransparency="True" PopupAnimation="Slide" >
...
</Popup>
当用户点击“菜单”按钮时,弹出窗口显示在按钮上方。再次点击,它会隐藏。
我在这个弹出窗口中创建了一个STYLE,继续;
<Style x:Key="MenuPopup" TargetType="Popup">
<Setter Property="Placement" Value="Top"/>
<Setter Property="IsOpen">
<Setter.Value>
<Binding Path="IsChecked" Source="PlacementTarget"/>
</Setter.Value>
</Setter>
<Setter Property="AllowsTransparency" Value="True"/>
<Setter Property="PopupAnimation" Value="Slide" />
</Style>
使用这种风格,代码非常简单;
<CheckBox Name="Menu" />
<Popup PlacementTarget="{Binding ElementName=Menu}" Style="{StaticResource MenuPopup} >
...
</Popup>
但是当用户点击“菜单”按钮时,没有任何事情发生。
Binding的“Source”属性
答案 0 :(得分:1)
绑定的来源不应该是PlacementTarget
,而应该是Popup
本身。变化
<Binding Path="IsChecked" Source="PlacementTarget"/>
到
<Binding Path="PlacementTarget.IsChecked" RelativeSource="{x:Static RelativeSource.Self}"/>
它会起作用。