InvokeCommandAction命令参数

本文关键字:参数 命令 InvokeCommandAction | 更新日期: 2023-09-27 18:20:05

我有一个带有发票列表的视图模型,这些发票通过Telerik RadGridView显示。这个RadGridView有一个RowDetailsTemplate。当我点击一行并展开以显示行的详细信息时,我如何传递所选RadGridViewRow的InvoiceViewModel,以便从数据库中获取这些详细信息?

不同时加载所有信息并等待加载详细信息直到选择行之后的目的是减少加载时间。

这里有一些代码可供参考:

            <telerik:RadGridView x:Name="InvoicesGridView"
                                 ItemsSource="{Binding InvoicesForView}" DataContext="{Binding }"
                                 RowDetailsVisibilityMode="VisibleWhenSelected"
                                 // other stuff
                                 telerik:GridViewVirtualizingPanel.IsVirtualizing="False" EnableRowVirtualization="False"
                                  CanUserResizeColumns="False">
                <i:Interaction.Triggers>
                    <i:EventTrigger  EventName="RowDetailsVisibilityChanged" SourceObject="{Binding RelativeSource={RelativeSource AncestorType={x:Type telerik:GridViewRow}}}">
                        <i:InvokeCommandAction Command="{Binding DataContext.LoadInvoice, Source={StaticResource ViewContext}}"  />
                    </i:EventTrigger>
                </i:Interaction.Triggers>
                <telerik:RadGridView.Columns>
                    <-- Column definitions -->
                </telerik:RadGridView.Columns>
                <telerik:RadGridView.RowDetailsTemplate>
                    <-- Row details stuff -->
                </telerik:RadGridView.RowDetailsTemplate>
            </telerik:RadGridView>

我已经尝试通过一个选定的InvoiceViewModel,但我得到的都是null,我可以设置CommandParameter来获得我需要的信息吗?

InvokeCommandAction命令参数

            <telerik:RadGridView x:Name="InvoicesGridView"
                                 ItemsSource="{Binding InvoicesForView}" DataContext="{Binding }"
                                 ShowGroupPanel="False" Style="{StaticResource TransparentScrollBarStyle}"
                                 RowIndicatorVisibility="Collapsed" 
                                 TextElement.Foreground="White"
                                 TextElement.FontSize="12" 
                                 FontWeight="Normal" RowDetailsVisibilityMode="VisibleWhenSelected"
                                 AutoGenerateColumns="False" SelectionMode="Multiple"
                                 ShowColumnHeaders="True" RowHeight="24"
                                 CanUserSelect="True" GroupRenderMode="Flat"
                                 ScrollViewer.VerticalScrollBarVisibility="Visible"
                                 ScrollViewer.CanContentScroll="True" ColumnWidth="*"
                                 VirtualizingStackPanel.VirtualizationMode="Standard"
                                 telerik:GridViewVirtualizingPanel.IsVirtualizing="False" EnableRowVirtualization="False"
                                  CanUserResizeColumns="False">
                <telerik:RadGridView.Columns>
                    <telerik:GridViewToggleRowDetailsColumn />
                    <-- Other columns -->
                </telerik:RadGridView.Columns>
                <telerik:RadGridView.RowDetailsTemplate>
                    <DataTemplate>
                        <Grid Background="#f8f8f8" TextElement.Foreground="Black" TextElement.FontWeight="Normal" TextElement.FontStyle="Normal" Margin="-1,0" MinHeight="20">
                            <telerik:RadTabControl >
                                <telerik:RadTabItem DataContext="{Binding}"/>
                                <i:Interaction.Behaviors>
                                    <behaviors:RadTabControlTabChangeCommandBehavior>
                                        <behaviors:RadTabControlTabChangeCommandBehavior.TabChangeCommands>
                                            <behaviors:TabChangeCommand TabIndex="0" Command="{Binding Path=DataContext.LoadInvoice, Source={StaticResource ViewContext}}"/>
                                        </behaviors:RadTabControlTabChangeCommandBehavior.TabChangeCommands>
                                    </behaviors:RadTabControlTabChangeCommandBehavior>
                                </i:Interaction.Behaviors>
                            </telerik:RadTabControl>
                            <-- Other stuff -->
                </telerik:RadGridView.RowDetailsTemplate>
            </telerik:RadGridView>

以上是一个很好的小工作,对我来说是有效的