2011-09-16 126 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 }

因此,我期望的Path=Tag部分綁定工作,但是,當TextChanged事件發生時,標記爲null

我在做什麼錯?

回答

0

顯然,使用匿名類型不能很好地處理XAML和綁定......就我所知,這很奇怪,因爲它使用了反射。

創建一個簡單的公共類來存儲數據並使用它來代替匿名類型解決了這個問題。