Я нашел простой способ заставить это работать.Я связал текстовое свойство заголовка пункта меню в xaml со строковым свойством, которое добавляет символ галочки 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);
}
}
Когда выбран элемент меню, я переключаю свойство галочки.