2017-06-12 4 views
0

私はチェック可能なメニューを実装しようとしています。メニュー項目は一度に1つしかチェックされません。つまり、ラジオボタンの動作です。私はxamlでそれを保つために、スタイルとデータトリガでこれを達成したいと思います。その意図は、他の項目を観察することです。それ以外の場合は常にfalseに設定する必要があります。実際には、一度に1つだけがチェックされますが、2回のボタン押下が必要です。ボタンを1回押すだけで、どのように動作させることができますか?wpf menuitem style.trigger

<MenuItem Header="Header"> 
      <MenuItem x:Name="ChangesMenuItem" Header="Changes" IsCheckable="True" Command="{Binding ViewChangesCommand}"> 
       <MenuItem.Style> 
        <Style TargetType="MenuItem"> 
         <Style.Triggers>         
          <DataTrigger Binding="{Binding ElementName=SettingsMenuItem, Path=IsChecked}" Value="True"> 
           <Setter Property="IsChecked" Value="False" /> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding ElementName=SyncMenuItem, Path=IsChecked}" Value="True"> 
           <Setter Property="IsChecked" Value="False" /> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </MenuItem.Style> 
      </MenuItem> 
      <MenuItem x:Name="SettingsMenuItem" Header="Settings" IsCheckable="True" Command="{Binding ViewSettingsCommand}"> 
       <MenuItem.Style> 
        <Style TargetType="MenuItem"> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding ElementName=ChangesMenuItem, Path=IsChecked}" Value="True"> 
           <Setter Property="IsChecked" Value="False" /> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding ElementName=SyncMenuItem, Path=IsChecked}" Value="True"> 
           <Setter Property="IsChecked" Value="False" /> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </MenuItem.Style> 
      </MenuItem> 
      <MenuItem x:Name="SyncMenuItem" Header="Sync" IsCheckable="True" Command="{Binding ViewSyncCommand}"> 
       <MenuItem.Style> 
        <Style TargetType="MenuItem"> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding ElementName=ChangesMenuItem, Path=IsChecked}" Value="True"> 
           <Setter Property="IsChecked" Value="False" /> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding ElementName=SettingsMenuItem, Path=IsChecked}" Value="True"> 
           <Setter Property="IsChecked" Value="False" /> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </MenuItem.Style> 
      </MenuItem> 
     </MenuItem> 

答えて

0

私は選択に応じて変更されるヘッダーを持っているため、そのプロパティにバインドすることにしました。

<Menu> 
     <MenuItem Header="{Binding Header}"> 
      <MenuItem x:Name="ChangesMenuItem" Header="Changes" IsCheckable="True" Command="{Binding ViewChangesCommand}"> 
       <MenuItem.Style> 
        <Style TargetType="MenuItem"> 
         <Setter Property="IsChecked" Value="False"/> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding Header}" Value="Changes"> 
           <Setter Property="IsChecked" Value="True"/> 
          </DataTrigger>                
         </Style.Triggers>        
        </Style> 
       </MenuItem.Style>     
      </MenuItem> 
      <MenuItem x:Name="SettingsMenuItem" Header="Settings" IsCheckable="True" Command="{Binding ViewSettingsCommand}"> 
       <MenuItem.Style> 
        <Style TargetType="MenuItem"> 
         <Setter Property="IsChecked" Value="False"/> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding Header}" Value="Settings"> 
           <Setter Property="IsChecked" Value="True"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </MenuItem.Style> 
      </MenuItem> 
      <MenuItem x:Name="SyncMenuItem" Header="Sync" IsCheckable="True" Command="{Binding ViewSyncCommand}"> 
       <MenuItem.Style> 
        <Style TargetType="MenuItem"> 
         <Setter Property="IsChecked" Value="False"/> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding Header}" Value="Sync"> 
           <Setter Property="IsChecked" Value="True"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </MenuItem.Style> 
      </MenuItem> 
     </MenuItem> 
    </Menu> 
関連する問題