2017-11-17 7 views
0

보다 내가 DisplayIndex를 가지고 머리글을 클릭하면 상황에 맞는 메뉴를 표시 데이터 그리드에 대한 트리거를 만드는 방법을 찾고 있어요 것은 2WPF -하면 ColumnHeader의 displayIndex에 트리거가 더 큰 가치

보다 이것은 내가 지금 무엇을 가지고 큰 :

   <Style TargetType="{x:Type DataGridColumnHeader}"> 

        <Style.Triggers> 
         <Trigger Property="DisplayIndex" Value="2"> 
          <Setter Property="ContextMenu" 
           Value="{StaticResource ColumnHeaderContextMenu1}" /> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 

어떤 방법이 있습니까? 이유가 필요한 이유는 사용자가 열을 동적으로 추가하여 필요에 따라 (때때로) 삭제해야하기 때문입니다.

+0

그래서 당신이 적어도 2 열 콜렉션에서 사용자가 추가 컬럼을 추가 할 수 있습니다. 새로 작성된 컬럼에 대한 참조를 보유 할 수 있으면 코드 비하인 성 스타일을 찾아 새 컬럼에 첨부하십시오. – XAMlMAX

답변

0

다른 방법으로 처리했습니다. 코드는 유용 할 수 있습니다

XAML :

<DataGrid.ColumnHeaderStyle> 
        <Style TargetType="DataGridColumnHeader"> 
         <EventSetter Event="MouseRightButtonDown" Handler="DataGridColumnHeader_MouseRightButtonDown" /> 
        </Style> 
       </DataGrid.ColumnHeaderStyle> 

코드 숨김

이에 더 나은 방법이 있는지
private void DataGridColumnHeader_MouseRightButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      if (((DataGridColumnHeader)sender).DisplayIndex < 2) 
      { 
       return; 
      } 

      var x = DataContext as BrygadzistaViewModel; 
      x.ColumnHeaderToDelete = ((DataGridColumnHeader)sender).Content.ToString(); 

      ContextMenu cm = new ContextMenu(); 
      MenuItem mi = new MenuItem(); 
      mi.Header = "Usuń"; 
      mi.Command = x.DeleteDay; 
      cm.Items.Add(mi); 

      cm.IsOpen = true; 
     } 

원더)