我在wp7应用中使用silverlight在ContextMenu中有几个MenuItem。在特定情况下,我需要在其中一个项目旁边放置一个复选标记。
有没有办法做到这一点?
如果必须的话,我愿意在它的右侧添加一个Image控件。
我甚至试过这样做:
CheckBox box = new CheckBox();
menuItem.Items.Add(box);
但得到了NotImplementedException。
谢谢!
答案 0 :(得分:0)
您可以将一个列表框添加到contextmenu,然后将复选框添加到列表框中。我还没有实现,但你可以尝试一下。
答案 1 :(得分:0)
我找到了一种简单的方法来实现这一目标。我将xaml中的菜单项的Header文本属性绑定到一个字符串属性,如果设置了该标志,则添加unicode复选标记字符(0x2714)。
<toolkit:MenuItem
Header="{Binding InvertedCommandHeader}"
Click="onCommandInvert"
/>
我在数据上下文对象中定义了依赖项属性,如下所示:
public const string InvertedPropertyTag = "Inverted";
public static readonly DependencyProperty InvertedProperty =
DependencyProperty.Register(
InvertedPropertyTag,
typeof(bool),
typeof(MyData),
new PropertyMetadata(false));
public bool Inverted
{
get
{
return (bool)GetValue(InvertedProperty);
}
set
{
SetValue(InvertedProperty, value);
InvertedCommandHeader = value ?
Strings.IDST_MENUITEM_INVERTED + " \u2714" :
Strings.IDST_MENUITEM_INVERTED;
}
}
public const string InvertedCommandHeaderPropertyTag = "InvertedCommandHeader";
public static readonly DependencyProperty InvertedCommandHeaderProperty =
DependencyProperty.Register(
InvertedCommandHeaderPropertyTag,
typeof(string),
typeof(MyData),
new PropertyMetadata(
Strings.IDST_MENUITEM_INVERTED));
public string InvertedCommandHeader
{
get
{
return (string)GetValue(InvertedCommandHeaderProperty);
}
set
{
SetValue(InvertedCommandHeaderProperty, value);
}
}
选择菜单项后,我切换复选标记属性。