作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 ViewModel (AbstractContextMenu) 代表我的上下文菜单 (IContextMenu),我使用 DataTemplate 将一个真正的 ContextMenu 绑定(bind)到它:
<DataTemplate DataType="{x:Type local:AbstractContextMenu}">
<ContextMenu x:Name="contextMenu"
ItemsSource="{Binding Path=(local:IContextMenu.Items)}"
IsEnabled="{Binding Path=(local:IContextMenu.IsEnabled)}"/>
</DataTemplate>
public interface IContextMenu : IExtension
{
IEnumerable<IMenuItem> Items { get; set; }
bool IsEnabled { get; set; }
}
public IContextMenu ContextMenu
{
get
{
return m_ContextMenu;
}
protected set
{
if (m_ContextMenu != value)
{
m_ContextMenu = value;
NotifyPropertyChanged(m_ContextMenuArgs);
}
}
}
private IContextMenu m_ContextMenu = new ConcreteContextMenu();
static readonly PropertyChangedEventArgs m_ContextMenuArgs =
NotifyPropertyChangedHelper.CreateArgs<AbstractSolutionItem>(o => o.ContextMenu);
<StackPanel Orientation="Horizontal"
ContextMenu="{Binding Path=(local:AbstractSolutionItem.ContextMenu)}"
ContextMenuOpening="stackPanel_ContextMenuOpening">
<!-- stuff goes in here -->
</StackPanel>
最佳答案
AbstractSolutionItem.ContextMenu
的类型是什么?如果它对应于 ContextMenu
您的问题中的属性,那么问题可能是类型错误。 ContextMenu
FrameworkElement
的属性(property)期待一个实际的 ContextMenu
,而不是 IContextMenu
.在调试您的应用程序时尝试检查输出窗口 - 您可能会收到一条错误消息,指出这是问题所在。
而不是使用 DataTemplate
定义您的ContextMenu
,只要把模板的内容StackPanel.ContextMenu
:
<StackPanel Orientation="Horizontal"
ContextMenu="{Binding Path=(local:AbstractSolutionItem.ContextMenu)}"
ContextMenuOpening="stackPanel_ContextMenuOpening">
<StackPanel.ContextMenu DataContext="{Binding Path=(local:AbstractSolutionItem.ContextMenu)}">
<ContextMenu x:Name="contextMenu"
ItemsSource="{Binding Path=Items}"
IsEnabled="{Binding Path=IsEnabled}"/>
</StackPanel.ContextMenu>
<!-- stuff goes in here -->
</StackPanel>
ContextMenu
之后仍然存在问题。不知道如何创建
MenuItem
来自
IMenuItem
.为了解决这个问题,创建一个
ItemTemplate
对于
ContextMenu
,它绑定(bind)
IMenuItem
的成员到`菜单项。
关于wpf - 我可以使用 DataTemplate 将 ContextMenu 应用于 ContextMenuViewModel 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307650/
我有一个 ViewModel (AbstractContextMenu) 代表我的上下文菜单 (IContextMenu),我使用 DataTemplate 将一个真正的 ContextMenu 绑定
我是一名优秀的程序员,十分优秀!