C# Xamarin形成事件

C# Xamarin形成事件,c#,xamarin,events,xamarin.forms,C#,Xamarin,Events,Xamarin.forms,我是Xamarin和C#的新手 首先,我显示我的视图customer.xaml <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"

我是Xamarin和C#的新手

首先,我显示我的视图customer.xaml

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
             prism:ViewModelLocator.AutowireViewModel="True"
             xmlns:gridlook="clr-namespace:BlankApp5.Helpers"
             xmlns:syncfusion="clr-namespace:Syncfusion.SfDataGrid.XForms;assembly=Syncfusion.SfDataGrid.XForms" 
             x:Class="BlankApp5.Views.Customer">
    <ContentPage.ToolbarItems>
        <ToolbarItem Text="SAVE AS PDF" Order="Secondary" Clicked="SaveAsPdf"  />
    </ContentPage.ToolbarItems>

    <ContentPage.Resources>
        <ResourceDictionary>
            <gridlook:Gridhelp x:Key="gridhelp" />
        </ResourceDictionary>
    </ContentPage.Resources>

    <ContentPage.Content>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>

                <RowDefinition Height="auto"/>
            </Grid.RowDefinitions>

            <syncfusion:SfDataGrid 
                Grid.Row="0"
                x:Name="dataGrid_cust"
            GridStyle="{StaticResource gridhelp}"  
            ItemsSource="{Binding Customer_data}"
            ColumnSizer="Star"

            AutoGenerateColumns="False"       
            AllowSorting="True"
            SelectionMode="Single"
            GridTappedCommand="{Binding Tapped}"                      
            EnableDataVirtualization="True"
            AllowResizingColumn="True">

                <syncfusion:SfDataGrid.Columns
                x:TypeArguments="syncfusion:Columns">


                    <syncfusion:GridTextColumn HeaderText="Cust ID" 
                                      HeaderFontAttribute="Bold"                                
                                   MappingName="Id" />
                    <syncfusion:GridTextColumn MappingName="Name" HeaderFontAttribute="Bold"/>

                    <syncfusion:GridTextColumn HeaderText="Balance"
                                           HeaderFontAttribute="Bold" 
                                   MappingName="CurrentBalance" />


                </syncfusion:SfDataGrid.Columns>
            </syncfusion:SfDataGrid>

            <Grid Grid.Row="1"
                  BackgroundColor="Gray">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="2*"/>
                </Grid.ColumnDefinitions>

                <Label
                    Grid.Column="0"
                    Text="TOTAL BALANCE"
                    TextColor="Black"
                    FontAttributes="Bold"
                    VerticalOptions="Center"
                />
                <Label
                    Grid.Column="1"
                    Text="{Binding Total}"
                    TextColor="Black"
                    HorizontalOptions="End"
                    FontAttributes="Bold"
                    VerticalOptions="Center"/>
            </Grid>
        </Grid>
    </ContentPage.Content>

</ContentPage>
这一行不会执行我在下面定义的事件。我试过突破点。执行该行,但它从不将executuion传递给

private void PdfExport_HeaderAndFooterExporting(object sender, PdfHeaderFooterEventArgs e)

注册和调用事件是两件不同的事情。我建议您在构造函数中注册您的事件,使用:(取消注册只是一种最佳实践)

并在需要时调用它(在SaveAsPdf事件中,而不是在当前注册中),方法是:


实际上,您正在注册一个事件,而不是调用它。检查这个

注册事件与调用函数或方法不同。为了调用事件,您必须执行以下操作

HeaderAndFooterExporting?.Invoke (this, null);

希望这对您有所帮助。

该行不控制函数,而是注册事件处理程序。Ie;如果触发HeaderAndFooteExporting事件,则调用该事件。但你所做的只是注册它,这并不保证偶数会被触发。在所有情况下,我都需要触发它。你能帮我这么做吗。实际上,我从xamarin syncfusion sfdatagrid文档中获得了代码。我不知道它是如何工作的。我只需要在每次代码执行时触发那个事件。
private void PdfExport_HeaderAndFooterExporting(object sender, PdfHeaderFooterEventArgs e)
pdfExport.HeaderAndFooterExporting -= PdfExport_HeaderAndFooterExporting;
pdfExport.HeaderAndFooterExporting += PdfExport_HeaderAndFooterExporting;
HeaderAndFooterExporting?.Invoke (this, null);
HeaderAndFooterExporting?.Invoke (this, null);