2016-07-08 3 views
0

Я хочу иметь в своем приложении контекстное меню «DefaultPrinter», в котором есть некоторые связанные дочерние элементы (другие MenuItems), представляющие имена принтеров. У каждого дочернего объекта свойство IsCheckable установлено значение true.Пункт меню только с одним зарегистрированным значением

<MenuItem Header="DefaultPrinter" ItemsSource="{Binding AllPrinters}"> 
    <MenuItem.ItemContainerStyle> 
      <Style TargetType="{x:Type MenuItem}"> 
       <Setter Property="IsCheckable" Value="True"/> 
      </Style> 
    </MenuItem.ItemContainerStyle> 
</MenuItem> 

Однако, конечно, я хочу разрешить проверку только одного принтера (этот код не поддерживает это). Я искал решение в Интернете, но не нашел ничего полезного. Проблема в том, что MenuItem уходит от ItemsControl, и с этого момента у него нет концепции выбора предметов (например, Selector). Я могу попытаться написать свой собственный выбор, но сначала я хотел бы знать, есть ли лучшее и более простое решение для достижения этой цели.

Любая помощь будет оценена по достоинству.

+0

Обратитесь к этому ответу http://stackoverflow.com/questions/14979753/how-do-you-add-radio-buttons-to-menu-items И http://stackoverflow.com/questions/3652688/mutually-exclusive-checkable-menu-items –

ответ

1

Может злоупотребляют скрытый RadioButton:

<MenuItem.ItemTemplate> 
    <DataTemplate> 
     <Grid> 
      <RadioButton GroupName="Printers" 
        IsChecked="{Binding IsChecked, RelativeSource={RelativeSource AncestorType=MenuItem}}" 
        Visibility="Collapsed"/> 
      <TextBlock Text="{Binding FullName}"/> 
     </Grid> 
    </DataTemplate> 
</MenuItem.ItemTemplate> 
Смежные вопросы