gpt4 book ai didi

带有上下文菜单的 WPF 按钮

转载 作者:行者123 更新时间:2023-12-04 14:03:08 25 4
gpt4 key购买 nike

我是 WPF 新手,正在尝试将上下文菜单绑定(bind)到按钮,其中上下文菜单项来自 View 模型。

这就是我正在做的事情:

<Button x:Name="btn" Content="Context Menu">
<Button.ContextMenu>
<ContextMenu x:Name="cm" ItemsSource="ItemsList"/>
</Button.ContextMenu>
</Button>

private List<string> itemsList = null;
public List<string> ItemsList
{
get
{
if(itemsList == null)
itemsList = new List<string>(myStringArrayOfItems);
return itemsList;
}
}

XAML 编辑器不断显示错误:“IEnumerable”的 TypeConverter 不支持从字符串转换。

我在这里做错了什么?

另外,假设我得到这个工作,我该怎么做才能将这些项目绑定(bind)到命令并在单击项目时做一些工作?我想对所有菜单项运行相同的命令,只需使用项目字符串作为参数。

最佳答案

如果你这样做 ItemsSource="ItemsList"你没有绑定(bind)到 ItemsList但将其设置为字符串 ItemsList ,因此你的错误。尝试像这样绑定(bind)它:

<ContextMenu x:Name="cm" ItemsSource="{Binding Path=ItemsList}"/>

至于 Command部分你需要一些 ICommand 的实现接口(interface)(如 here ),然后像在 ItemContainerStyle 中一样绑定(bind)它:
<ContextMenu ...>
<ContextMenu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type ContextMenu}}, Path=PlacemantTarget.DataContext.ItemChanged }"/>
<Setter Property="CommandParameter" Value="{Binding}"/>
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu >

关于带有上下文菜单的 WPF 按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20745758/

25 4 0