Свойство 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>
Другие вопросы по тегам