2011-09-16 2 views
0

제네릭 DataGrid의 일부 열에 대한 사용자 지정 헤더를 만들려고합니다. 이 헤더에 필러를 적용하는 데 사용할 수있는 텍스트 상자가 포함되기를 바랍니다.DataGrid에서 사용자 지정 열 머리글 만들기 - 바인딩 문제

<Style x:Key="ColumnHeaderStyle" TargetType="dataprimitives:DataGridColumnHeader"> 
     <Setter Property="ContentTemplate"> 
      <Setter.Value> 
       <DataTemplate> 
        <StackPanel> 
         <TextBlock Text="{Binding}"/> 
         <TextBox Width="Auto" Tag="{Binding Path=Tag}" LostFocus="TextBox_LostFocus" TextChanged="TextBox_TextChanged" MinWidth="50"/> 
        </StackPanel> 
       </DataTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

이 나는 ​​순간에 놀겠다는 거있어 헤더가 사용하는 스타일 :

이것은 내가 지금까지있는 것입니다.

응용 프로그램이 실행됩니다
private void dataGrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e) 
    { 
     (...) 
     e.Column.Header = new { Text = e.Column.Header, Tag = e.PropertyName }; 
     e.Column.HeaderStyle = Resources["ColumnHeaderStyle"] as Style; 
     (...) 
    } 

, 열 의지의 TextBlock의 다음과 같은 포함 : 여기에 생성시 헤더에 적절한 데이터를 공급하는 코드 생성의 예로서 { Text = Description, Tag = Description }

, 나는를 기대 그러나 TextChanged 이벤트가 발생하면 null 태그가 작동하려면 바인딩의 일부인 Path=Tag이 필요합니다.

내가 뭘 잘못하고 있니?

답변

0

분명히 익명 형식을 사용하면 XAML과 바인딩에서 잘 작동하지 않습니다 ... 이상하게도, 내가 아는 한 리플렉션을 사용하므로 이상합니다.

익명 형식 대신 데이터를 저장하고 사용하는 간단한 공용 클래스를 만들어 문제를 해결했습니다.

관련 문제