Лучшая вещь для этого - конвертер. Ваш код будет выглядеть примерно так:
<UserControl xmlns:myConverters="MyRandomNamespace">
<UserControl.Resources>
<myConverters:MyMenuTextConverter x:Key="MyMenuTextConverter" />
</UserControl.Resources>
<Grid x:Name="LayoutRoot">
<TextBlock Text="{Binding IsPlaying, Converter={StaticResource MyMenuTextConverter }}" />
</Grid>
</UserControl>
и в конвертере:
namespace MyRandomNamespace
{
public class MyMenuTextConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if ((bool) value == true)
return "Pause";
return "Play";
}
}
}
Я использовал TextBlock
для отображения концепции привязки, все, что вам нужно сделать, это использовать тот же синтаксис привязки в соответствующем свойстве MenuItem. Я также возвращаю текстовый конвертер из конвертера, который не является оптимальным (лично мне нравятся мои текстовые конвертеры для извлечения их значений из файла строковых ресурсов, чтобы мое приложение учитывало культуру), но вы поняли идею.