有没有办法在wp7 / silverlight的上下文菜单旁边添加复选标记?

时间:2011-12-17 03:54:48

标签: silverlight windows-phone-7.1 windows-phone-7

我在wp7应用中使用silverlight在ContextMenu中有几个MenuItem。在特定情况下,我需要在其中一个项目旁边放置一个复选标记。

有没有办法做到这一点?

如果必须的话,我愿意在它的右侧添加一个Image控件。

我甚至试过这样做:

CheckBox box = new CheckBox();
menuItem.Items.Add(box);

但得到了NotImplementedException。

谢谢!

2 个答案:

答案 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);
  }
}

选择菜单项后,我切换复选标记属性。