C# WPF Datagrid-订阅单元负载事件?

C# WPF Datagrid-订阅单元负载事件?,c#,.net,wpf,xaml,datagrid,C#,.net,Wpf,Xaml,Datagrid,我希望在单元加载后,在代码隐藏中修改datagrid单元的布局 我知道我可以订阅DataGrid.Load或DataGrid.LoadingRow事件,但我希望有一种方法可以订阅特定单元格的Load事件,以便实现更干净。在中,cell类似乎有事件(从FrameworkElement继承),但我找不到一种干净地订阅事件的方法 我使用的是DataGridTemplateColumn,我想在XAML(CellTemplate)中很容易做到这一点 谢谢大家! 您可以使用DataGridColumn.

我希望在单元加载后,在代码隐藏中修改datagrid单元的布局

我知道我可以订阅DataGrid.Load或DataGrid.LoadingRow事件,但我希望有一种方法可以订阅特定单元格的Load事件,以便实现更干净。在中,cell类似乎有事件(从FrameworkElement继承),但我找不到一种干净地订阅事件的方法

我使用的是DataGridTemplateColumn,我想在XAML(CellTemplate)中很容易做到这一点



谢谢大家!

您可以使用
DataGridColumn.CellStyle
EventSetter
来实现:

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

“初始化”事件呢,我也这样做了:,它标记为“已初始化”,已初始化的事件不是路由事件element@KhalilLazhar正如错误消息所述,
Initialized
不是
RoutedEvent
,因此不能与
EventSetter
一起使用。我不确定是否有一种简单的方法可以订阅
DataGridCell
上的事件。无论如何,我认为这不是一个好主意,因为这个事件只触发一次,而
DataGridCell
可以作为各种单元格值的容器,因为它在启用虚拟化时可能会被重用。是的,这就是我想要的,一个只触发一次的事件,关于订阅有什么想法吗?感谢在快速浏览了一下之后,我认为没有一个简单的方法可以实现这一点。但是,作为一种解决方法,您可以注册一个
加载的
处理程序,该处理程序将自动取消注册(通过在该处理程序中取消订阅),这样它将只被调用一次。除此之外,我帮不了什么忙。
<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;
    ...
}