2011-09-16 28 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です。

私は間違っていますか?

答えて

0

明らかに、匿名型を使用すると、XAMLとバインディングでうまく動作しません。これは奇妙です。私が知る限り、反射を使用するためです。

データを格納するための単純なパブリッククラスを作成し、匿名型の代わりに使用すると、問題が解決しました。

関連する問題