Свойство MenuItem IsChecked НЕ связывается со свойством VM
Здравствуйте, я новый программист WPF/MVVM и у меня проблемы с MenuItem.
У меня есть меню, которые ItemsSourced привязаны к объекту, который я создал;
<Menu Height="23" HorizontalAlignment="Left" Name="menuProfile" VerticalAlignment="Top" Width="58" >
<MenuItem Header="Profiles" ItemsSource="{Binding Path=ProfileList}" DisplayMemberPath="ProfileName" >
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="IsCheckable" Value="True"/>
<Setter Property="IsChecked" Value="{Binding Path=IsSelected, Mode=TwoWay}"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</Menu>
Когда я запускаю это, я вижу все свои элементы в меню, но мое свойство IsSelected не обновляется.
public bool IsSelected
{
get { return _isSelected; }
set
{
_isSelected = value;
GetProfileConfigInfo();
}
}
Если я возьму контейнер стиля и поместу значения IsCheckable и IsChecked в соответствие с MenuItem....
<MenuItem Header="Profiles" ItemsSource="{Binding Path=ProfileList}" DisplayMemberPath="ProfileName" IsCheckable="True" IsChecked="{Binding IsSelected}" />
Моя собственность IsSelected обновляется, но я не вижу никаких элементов в моем меню, только заголовок Profiles.
А идея о том, что я делаю не так????
1 ответ
В вашем установщике для IsSelected вам необходимо вызвать OnPropertyChanged("IsSelected").
Я думаю, что это может решить вашу проблему.
Я скопировал ваш точный код (ниже) в Blend и создал пример источника данных с вашими точными именами свойств, и флажки в меню работали правильно.
<Menu Height="23" HorizontalAlignment="Left" Name="menuProfile" VerticalAlignment="Top" Width="58" >
<MenuItem Header="Profiles" ItemsSource="{Binding Path=ProfileList}" DisplayMemberPath="ProfileName" >
<MenuItem.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="IsCheckable" Value="True"/>
<Setter Property="IsChecked" Value="{Binding Path=IsSelected, Mode=TwoWay}"/>
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>
</Menu>