Вы лучше привязываетесь к объекту, чем к примитивному типу. Этот объект часто называют «моделью» для вашего представления.
WPF использует интерфейс INotifyPropertyChanged для модели (или часто модели представления), чтобы уведомить представление о том, что модель изменила состояния.
Таким образом, вы сначала захотите определить класс данных как модель, которая реализует интерфейс INotifyPropertyChanged и запускает событие PropertyChanged при каждом изменении свойства.
Когда вы устанавливаете привязку, вам нужно беспокоиться о 5 основных элементах привязки. Привязка имеет исходный объект, исходный путь к исходному объекту, целевой объект, целевое свойство для целевого объекта и необязательный преобразователь.
Если вы не укажете источник, по умолчанию используется DataContext элемента управления, для которого установлена привязка. Существуют и другие варианты настройки источника. Здесь - статья Microsoft по настройке источника. Затем вы можете установить путь свойства, чтобы извлечь из источника для привязки. В вашем случае источником является логическое значение, и нет пути, потому что для привязки используется весь исходный объект.
Цель - это всегда элемент управления, для которого вы устанавливаете привязку, а свойство target - это свойство этого элемента управления, к которому вы привязываете. В этом случае MenuItem и IsEnabled.
Конвертер может при желании преобразовать исходное значение в значение, совместимое с целевым свойством. Вы можете использовать любой объект для конвертера, который реализует IValueConverter или IMultiValueConverter (для MutliBindings).
В вашем случае я сначала создал бы модель, которая реализует INotifyPropertyChanged. Затем я бы назначил DataContext меню для экземпляра модели. Тогда я бы установил привязку к:
IsEnabled="{Binding Path=EnableFlag}"
(где EnableFlag - логическое свойство в модели, с которой вы хотите связать меню)
Если вы правильно настроили интерфейс INotifyPropertyChanged, пункт меню будет включаться / отключаться при каждом изменении этого свойства в модели.