2015-05-22 10 views
1

Я пытаюсь поместить ContextMenu в стили ниже, чтобы он мог использоваться всеми текстовыми полями.установка ContextMenu в стилях WPF

<Grid.Resources> 
      <Style x:Key="Cell" TargetType="TextBox"> 
       <Setter Property="Margin" Value="0"/> 
       <Setter Property="BorderBrush" Value="Black"/> 
       <Setter Property="BorderThickness" Value="0.2"/> 
       <Setter Property="VerticalAlignment" Value="Stretch"/> 
       <Setter Property="HorizontalAlignment" Value="Stretch"/> 
       <Setter Property="MinHeight" Value="30"/> 
       <Setter Property="MinWidth" Value="70"/> 
       <Setter Property="ContextMenu"> 
        <Setter.Value> 
         <ContextMenu> 
          <MenuItem Header="Level1" Click="SubLevel1_Click_1"/> 
          <MenuItem Header="SubLevel1"/> 
         </ContextMenu> 
        </Setter.Value> 
       </Setter> 
      </Style> 

     </Grid.Resources> 

Этот код работает нормально, пока я не добавлю событие Click. Когда событие click добавлено, оно строит, но генерирует исключение, когда оно выполняется: «Set connectionId выбрал исключение». Номер линии «21» и позиция линии «34».

Я делаю что-то неправильно здесь.

+0

Вы можете разместить код вашего clickevent а пожалуйста? – Krishna

+0

Фактически, даже если я сохраняю все тело события щелчка пустым, ошибка наступает. – indra

+0

Добавлен контекстное меню через код. – indra

ответ

3

Не уверен, что это вызывает, но вы можете легко обойти это, поставив ContextMenu как отдельный ресурс:

<ContextMenu x:Key="ContextMenu"> 
    <MenuItem Header="Level1" Click="SubLevel1_Click_1"/> 
    <MenuItem Header="SubLevel1"/> 
</ContextMenu> 
<Style TargetType="TextBox"> 
    <Setter Property="ContextMenu" Value="{StaticResource ContextMenu}"/> 
</Style>