2012-02-16 21 views
1

こんにちは、私は新しいWPF/MVVMプログラマであり、MenuItemに問題があります。MenuItem IsCheckedプロパティがVMプロパティにバインドされていません

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は、MenuItemのに合わせて値をにisChecked置く....

<MenuItem Header="Profiles" ItemsSource="{Binding Path=ProfileList}" DisplayMemberPath="ProfileName" IsCheckable="True" IsChecked="{Binding IsSelected}" /> 

私の財産をIsSelectedが更新されますが、私ならば私のメニューの項目のどれかを見ることができませんプロフィール

私が間違っていることを考えていますか?

答えて

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> 
関連する問題