WPF工具包扩展 - 绑定下拉按钮封闭事件与ViewModel方法



我正在尝试将C#WPF应用程序转换为使用MVVM。我遇到的下拉餐点来自Xceed的WPF扩展工具包。我正在尝试将下拉餐点的封闭事件绑定到我的ViewModel中的一种方法。当按钮的上下文菜单关闭时,方法根本不会开火。

当我将EventName更改为单击时,该方法不会发出任何问题。我希望该方法在用户在下拉上下文菜单中选择了其中一个,而不是选择按钮本身时。我试图设置上下文菜单的数据附件(根据WPF ContextMenu Woes:我如何设置ContextMenu的DataContext?(,并使用单击菜单项本身的单击事件,但结果相同 - 没有错误,但是方法是方法。不开火。我还尝试使用不同的事件名称,例如下拉列表,下拉列表,关闭和插图,没有成功。

        <xcad:DropDownButton Name="weekMonthDropButton" Background="White" Content="Chart By Week/Month" Width="150"  Grid.Row="0" Grid.ColumnSpan="2">
            <xcad:DropDownButton.DropDownContextMenu>
                <ContextMenu>
                    <MenuItem Header="Week">
                    </MenuItem>
                    <MenuItem Header="Month"/>
                </ContextMenu>
            </xcad:DropDownButton.DropDownContextMenu>
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="Closed">
                    <ei:CallMethodAction TargetObject="{Binding}" MethodName="WeekMonthMenuClicked" />
                </i:EventTrigger>
            </i:Interaction.Triggers>
        </xcad:DropDownButton>

我猜我要么在事件名称中犯了一个错误,要么在上下文的环境中犯了一个错误,但是我是WPF和MVVM的新手,并且很难调试问题。任何帮助将不胜感激

如果它可以帮助其他任何人 - 我最终沿着ICommand路线并为单个Menuitem设置DataContext。以下代码对我有用。

<xcad:DropDownButton Name="weekMonthDropButton" Background="White" Content="Chart By Week/Month" Width="150"  Grid.Row="0" Grid.ColumnSpan="2">
            <xcad:DropDownButton.DropDownContextMenu>
                <ContextMenu >
                    <MenuItem Header="Week" Command="{Binding Path=PlacementTarget.DataContext.WeekMonthMenuCommand, RelativeSource={RelativeSource AncestorType=ContextMenu}}" />
                    <MenuItem Header="Month"/>
                </ContextMenu>
            </xcad:DropDownButton.DropDownContextMenu>
        </xcad:DropDownButton>