0

我有带有 DataGrid 的 MainWindow.xaml

<Grid>
    <DataGrid x:Name="dataGrid" Style="{StaticResource superDataGrid}" Sorting="DataGrid_Sorting_1"/>
</Grid>

带有处理程序的 MainWindow.cs

    private void DataGrid_Sorting_1(object sender, DataGridSortingEventArgs e)
    {
        //handle stuff......
    }

和 Style.xaml

<Style TargetType="DataGrid" x:Key="superDataGrid">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGrid}">
                <DataGrid ItemsSource="{TemplateBinding DataGrid.ItemsSource}"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

因此,在应用“superDataGrid”样式事件处理程序后,DataGrid_Sorting_1 不再起作用(调用)。我认为 ControlTemplate 会覆盖父事件处理程序。

如何将父排序事件处理程序设置为 Style.ControlTemplate ?

4

1 回答 1

0

“排序”事件由包含在您的 Style 中的 DataGrid 引发,但不是由应用 Style 的 DataGrid 引发。只需将“排序”事件处理程序添加到您的样式中的 DataGrid,它应该可以工作。

于 2013-05-23T10:46:57.310 回答