如何将上下文菜单绑定到WPF中的列表框项按钮

时间:2018-04-29 12:42:38

标签: c# wpf data-binding listbox contextmenu

我尝试将上下文菜单绑定到列表框,并在用户单击列表框项目内的按钮时将其打开。 如果我将上下文菜单应用于列表框本身,绑定可以正常工作。 如果我将上下文菜单应用于listboxitem中的按钮,我无法将其绑定到列表框项数据上下文。

因此,以下方法有效,但只能右键单击列表框项目:

<ListBox ItemsSource="{Binding Items}">
    <ListBox.ContextMenu>
        <ContextMenu DataContext="{Binding PlacementTarget.SelectedItem, RelativeSource={RelativeSource Self}}">
            <MenuItem
                Header="{Binding Name}"
                IsCheckable="True"
                IsChecked="{Binding Active}" />
        </ContextMenu>
    </ListBox.ContextMenu>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Name}" />
                <RadioButto />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

在下面的一个中,我尝试从单选按钮下绑定上下文菜单,以便稍后我可以通过左键单击按钮而不是右键单击列表框项目中的任何位置来打开上下文菜单:

<ListBox ItemsSource="{Binding Items}"> 
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Name}" />
                <RadioButton>
                    <RadioButton.ContextMenu>
                        <ContextMenu DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=PlacementTarget.DataContext}">
                            <MenuItem
                                Header="{Binding Name}"
                                IsCheckable="True"
                                IsChecked="{Binding Active}" />
                        </ContextMenu>
                    </RadioButton.ContextMenu>
                </RadioButton>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

我尝试了各种Binding选项,但没有太多运气。

当我点击按钮(仅在按钮上)时,任何让我获得按钮旁边的上下文菜单的解决方案都可以。

0 个答案:

没有答案