Что вам нужно сделать, это связать свойство заголовка, а не IsChecked. Я предполагаю, что вы хотите сделать это только тогда, когда пункт проверен. Хотя это было бы возможно при использовании Style для MenuItem, я бы рекомендовал выполнять такую работу в ViewModel.
Вместо того чтобы иметь ObjectDataProvider, ваша виртуальная машина будет предоставлять логические свойства для каждого из проверяемых пунктов меню. Когда любое из этих свойств изменилось, он мог вызвать сам этот метод и выставить объект как свойство только для чтения. Просто установите DataContext всего элемента управления на экземпляр вашей виртуальной машины, и привязки будут работать.
Примерно так:
public class NMInfoViewModel : INotifyPropertyChanged
{
private bool isSNYC12P10650 = false;
public bool IsSNYC12P10650
{
get { return isSNYC12P10650; }
set
{
if (value == isSNYC12P10650) return;
isSNYC12P10650 = value;
OnPropertyChanged("IsSNYC12P10650");
if (value)
NMInfo = NMInfoProvider.GetDcmsInfomation("SNYC12P10650");
}
}
...
private NMInfo nMInfo;
public NMInfo NMInfo
{
get { return nMInfo; }
private set
{
if (value == nMInfo) return;
nMInfo = value;
OnPropertyChanged("NMInfo");
}
}
}
И ваши MenuItems будут выглядеть так:
<MenuItem Header="SNYC12P10650" IsCheckable="True"
ToolTip="Production" IsChecked="{Binding IsSNYC12P10650}" />