Wpf 带有复选框和弹出窗口的菜单式用户界面

Wpf 带有复选框和弹出窗口的菜单式用户界面,wpf,binding,Wpf,Binding,我用复选框和弹出框制作了一个类似UI的菜单 <CheckBox Name="Menu" /> <Popup Placement="Top" PlacementTarget="{Binding ElementName=Menu}" IsOpen="{Binding ElementName=Menu, Path=IsChecked}" AllowsTransparency="True" PopupAnimation="Slide" > ... </Popup>

我用复选框和弹出框制作了一个类似UI的菜单

<CheckBox Name="Menu" />
<Popup Placement="Top" PlacementTarget="{Binding ElementName=Menu}" IsOpen="{Binding ElementName=Menu, Path=IsChecked}" AllowsTransparency="True"  PopupAnimation="Slide" >
...
</Popup>

...
当用户单击“菜单”按钮时,按钮上方会显示弹出窗口。然后再次单击,它将隐藏

我做了一个风格的弹出窗口,如下

<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>


绑定的源不应该是
PlacementTarget
,而应该是
弹出窗口本身。改变

<Binding Path="IsChecked" Source="PlacementTarget"/>


它会起作用的

<Binding Path="PlacementTarget.IsChecked" RelativeSource="{x:Static RelativeSource.Self}"/>