2016-11-23 14 views
3

セルが読み込まれた後に、コードビハインドでDataGridセルのレイアウトを変更しようとしています。WPF Datagrid - セルロードイベントに登録しますか?

私はDataGrid.LoadまたはDataGrid.LoadingRowイベントを購読することができます知っているが、私は実装がきれいになるように、具体的な個々のセルのLoadイベントをサブスクライブする方法があり期待しています。 documentationでは、セルクラスには(FrameworkElementから継承された)イベントがありますが、イベントにきれいに登録する方法を見つけることはできません。

私はDataGridTemplateColumnを使用していますが、XAML(CellTemplate)で簡単に行うことができたと思いました。

<DataGridTemplateColumn Header="ATTENDEES" Width="*"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <ItemsControl ItemsSource="{Binding Path=attendees}" x:Name="AttendeesItemsControl"/> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

ありがとうございます!

答えて

2

あなたはそれを達成するためにEventSetterと一緒DataGridColumn.CellStyleを使用することができます。

<DataGridTemplateColumn> 
    <DataGridTemplateColumn.CellStyle> 
     <Style TargetType="{x:Type DataGridCell}"> 
      <EventSetter Event="Loaded" Handler="CellLoaded" /> 
     </Style> 
    </DataGridTemplateColumn.CellStyle> 
</DataGridTemplateColumn> 

そして、コードビハインドで:

private void CellLoaded(object sender, EventArgs e) 
{ 
    var cell = (DataGridCell)sender; 
    ... 
} 
+0

何 "初期化" イベントについて?私は同じことをしました:、 "Initialized"とマークされたイベント、初期化されたものはルーティングされた要素ではありません –

+1

@KhalilLazhar 'RoutedEvent'ではなく、' EventSetter'でも使用することができます。私はそのイベントを 'DataGridCell'で購読する簡単な方法があるのか​​分かりません。とにかくこのイベントは一度しか発生しないので、 'DataGridCell'は仮想化が有効なときに再利用される可能性があるので、さまざまなセル値のコンテナとして機能することができます。 – Grx70

+0

はい、それは私が望むものです。ただちに消火する予定です。加入者のアイデアは何ですか?ありがとう –

関連する問題