如何将sfDataGrid SelectedItem绑定到弹出窗口中的按钮

问题描述

我正在研究wpf syncfusion:sfDataGrid。

在网格中,我有按钮,在按钮上单击“我正在打开一个弹出窗口”。 在弹出窗口中,有两个绑定到viewmodel的按钮。

我想将sfDataGrid的同一对象绑定到“弹出窗口”中的按钮上,以将viewmodel变为null。

我使用了CommandParameter,但是它不起作用。

#SfDataGrid代码#:

 <syncfusion:SfDataGrid x:Name="dgKYCUser" 
                                               ItemsSource="{Binding Path = lstTempKYCUserDetails,Mode=TwoWay}"   
                                           SelectedItem="{Binding SelectedItem,Mode=TwoWay}"                                                   
                                           NavigationMode="Row"
                                           SelectionMode="Multiple"
                                           ColumnSizer="Auto"
                                           HeaderRowHeight="30"
                                           AllowFiltering="True"
                                           HeaderStyle="{StaticResource headerStyle}" 
                                           AllowResizingColumns="True"
                                           AllowDraggingColumns="True"
                                           AllowDrop="True"
                                           AutoGenerateColumns="False"
                                           Foreground="#3e4345"
                                           AllowEditing="True"
                                           FrozenColumnCount="2"
                                           BorderBrush="Red"
                                           Background="White"
                                           >

通过sfDataGrid中的按钮打开弹出窗口

<syncfusion:GridTemplateColumn MappingName="sPenny" HeaderText="Penny"  Width="65" ShowHeaderToolTip="True" syncfusion:FocusManagerHelper.WantsKeyInput="True">
                                <syncfusion:GridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <StackPanel>
                                            <Button  Content="Penny" ToolTip="Penny" Visibility="{Binding BtnPennyAmountVisbility,Mode=TwoWay}" syncfusion:FocusManagerHelper.FocusedElement="True"  Command="{Binding DataContext.OnPennyAmtDrop,ElementName=dgKYCUser}" CommandParameter="{Binding}" IsEnabled="{Binding IsPennyBtnEnabled}" />
                                            <Button x:Name="ViewBtn" Content="View Details" ToolTip="View Details" Visibility="{Binding ViewDetailsbtnVisibility,Mode=TwoWay}" >
                                                <i:Interaction.Triggers>
                                                    <i:EventTrigger EventName="Click">
                                                        <i:InvokeCommandAction Command="{Binding DataContext.OnViewDetailsClick,ElementName=dgKYCUser}" CommandParameter="{Binding}" />
                                                        <myaction:PopupAction PropertyName="IsOpen" Targetobject="{Binding ElementName=PennyPopup}" Value="True" />
                                                    </i:EventTrigger>
                                                </i:Interaction.Triggers>
                                            </Button>
                                            <Label Content ="Pending" Background="Gray" Foreground="Black" Visibility="{Binding PendingVisibility}"/>
                                            <Label Content ="{Binding sPenny}"  Foreground="Black" Visibility="{Binding lblPennyAmountVisbility,Mode=TwoWay}"/>
                                        </StackPanel>
                                    </DataTemplate>
                                </syncfusion:GridTemplateColumn.CellTemplate>
                            </syncfusion:GridTemplateColumn>

弹出窗口

 <Popup x:Name="PennyPopup" Width="700" Height="250" HorizontalAlignment="Center" VerticalAlignment="Center" IsOpen="{Binding isPennyPopupOpen}" PlacementTarget="{Binding ElementName=ViewBtn}" Placement="MousePoint" StaysOpen="False">
                    <Border BorderBrush="DarkGray" BorderThickness="2">
                        <Grid Background="White" Width="700">
                            <Grid.RowDeFinitions>
                                <RowDeFinition Height="auto"/>
                                <RowDeFinition Height="auto"/>
                                <RowDeFinition Height="auto"/>
                                <RowDeFinition Height="auto"/>
                                <RowDeFinition Height="auto"/>
                                <RowDeFinition Height="auto"/>
                                <RowDeFinition Height="auto"/>
                                <RowDeFinition Height="auto"/>
                                <RowDeFinition Height="auto"/>
                            </Grid.RowDeFinitions>

                            <Grid.ColumnDeFinitions>
                                <ColumnDeFinition Width="110"/>
                                <ColumnDeFinition Width="150"/>
                                <ColumnDeFinition Width="90"/>
                                <ColumnDeFinition Width="150"/>
                                <ColumnDeFinition Width="10"/>
                                <ColumnDeFinition Width="150"/>
                            </Grid.ColumnDeFinitions>

                            <Label Content="Bank Details" Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                            <Label Content="Bank Details from Penny" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="3" HorizontalAlignment="Right" VerticalAlignment="Center" />

                            <Label Content="Client Name :" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" />
                            <TextBox Grid.Column="1" Grid.Row="1" Grid.ColumnSpan="2" Width="150" VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding sClientName}" />
                            <TextBox Grid.Column="2" Grid.Row="1" Grid.ColumnSpan="3" Width="150" VerticalAlignment="Center" HorizontalAlignment="Right" Text="{Binding sClientName}" />
                            <Image Grid.Row="1" Grid.Column="5" Height="20" Width="30" Source="{Binding bClientVerify,Converter={StaticResource ImageConverter}}"/>

                            <Label Content="Bank Name : " Grid.Row="3" Grid.Column="0"  VerticalAlignment="Center" HorizontalAlignment="Left" />
                            <TextBox Grid.Column="1" Grid.Row="3" Grid.ColumnSpan="2" Width="150" VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding sBankName}"/>
                            <TextBox Grid.Column="2" Grid.Row="3" Grid.ColumnSpan="3" Width="150" VerticalAlignment="Center" HorizontalAlignment="Right" Text="{Binding sBankName}"/>
                            <Image Grid.Row="3" Grid.Column="5" Height="20" Width="30" Source="{Binding bBankVerify,Converter={StaticResource ImageConverter}}"/>

                            <Label Content="Branch Address : " Grid.Row="4" Grid.Column="0"  VerticalAlignment="Center" HorizontalAlignment="Left" />
                            <TextBox Grid.Column="1" Grid.Row="4" Grid.ColumnSpan="2" Width="150" VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding sBranchAddr}"/>
                            <TextBox Grid.Column="2" Grid.Row="4" Grid.ColumnSpan="3" Width="150" VerticalAlignment="Center" HorizontalAlignment="Right" Text="{Binding sBranchAddr}"/>
                            <Image Grid.Row="4" Grid.Column="5" Height="20" Width="30" Source="{Binding bBranchAddressverify,Converter={StaticResource ImageConverter}}"/>

                            <Label Content="Account No : " Grid.Row="5" Grid.Column="0"  VerticalAlignment="Center" HorizontalAlignment="Left"/>
                            <TextBox Grid.Column="1" Grid.Row="5"  Width="150" Grid.ColumnSpan="2" VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding sAccountNo}" />
                            <TextBox Grid.Column="2" Grid.Row="5"  Width="150" Grid.ColumnSpan="3" VerticalAlignment="Center" HorizontalAlignment="Right" Text="{Binding sAccountNo}" />
                            <Image Grid.Row="5" Grid.Column="5" Height="20" Width="30" Source="{Binding bAccountNoVerify,Converter={StaticResource ImageConverter}}"/>

                            <Label Content="IFSC : " Grid.Row="6" Grid.Column="0"  VerticalAlignment="Center" HorizontalAlignment="Left"/>
                            <TextBox Grid.Column="1" Grid.Row="6"  Width="150" Grid.ColumnSpan="2" VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding sIFSCCode}"/>
                            <TextBox Grid.Column="2" Grid.Row="6"  Width="150" Grid.ColumnSpan="3"  VerticalAlignment="Center" HorizontalAlignment="Right" Text="{Binding sIFSCCode}"/>
                            <Image Grid.Row="6" Grid.Column="5" Height="20" Width="30" Source="{Binding bIFSCVerify,Converter={StaticResource ImageConverter}}"/>

                            <Label Content="MICR : " Grid.Row="7" Grid.Column="0"  VerticalAlignment="Center" HorizontalAlignment="Left"/>
                            <TextBox Grid.Column="1" Grid.Row="7" Grid.ColumnSpan="2" Width="150" VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding sMICRNo}"/>
                            <TextBox Grid.Column="2" Grid.Row="7" Grid.ColumnSpan="3" Width="150" VerticalAlignment="Center" HorizontalAlignment="Right" Text="{Binding sMICRNo}"/>
                            <Image Grid.Row="7" Grid.Column="5" Height="20" Width="30" Source="{Binding bMICRVerify,Converter={StaticResource ImageConverter}}"/>

                            <Button Grid.Row="8" Grid.Column="1" Margin="0,10,0" Grid.ColumnSpan="2" Width="100" Content="Accept" HorizontalAlignment="Center" VerticalAlignment="Bottom" Command="{Binding OnAcceptClick}" CommandParameter="{Binding Path=SelectedItem,ElementName=dgKYCUser}"/>
                            <Button Grid.Row="8" Grid.Column="2" Margin="0,0" Grid.ColumnSpan="3" Width="100" Content="Reject"  HorizontalAlignment="Center" VerticalAlignment="Bottom" Command="{Binding OnRejectClick}" CommandParameter="{Binding Path=SelectedItem,ElementName=dgKYCUser}"/>
                            
                        </Grid>
                    </Border>
                </Popup>

这是我的viewmodel代码

OnAcceptClick = new DelegateCommand<vwKYCUserDetails>(async (m) =>
            {
                try
                {
                    string sResult = await InsertKYCBtnDetails(PennyId,(short)enumBtnTypes.PENNY);

                    vwKYCUserDetails objvwKYCUserDetails = lstKYCUserDetails.Where(x => x.id == PennyId).FirstOrDefault();

                    if (sResult == Constant.Successful)
                    {                        
                        objvwKYCUserDetails.ViewDetailsbtnVisibility = Visibility.Collapsed;
                        objvwKYCUserDetails.lblPennyAmountVisbility = Visibility.Visible;
                        objvwKYCUserDetails.IsUCCUploadBtnEnabled = true;
                    }
                }
                catch (Exception ex)
                {
                    Logger.WriteException(ex,objLog);
                }
            });

            OnRejectClick = new DelegateCommand<vwKYCUserDetails>(async (m) =>
            {                
                vwKYCUserDetails objvwKYCUserDetails = lstKYCUserDetails.Where(x => x.id == PennyId).FirstOrDefault();
                try
                {                    
                    objvwKYCUserDetails.BtnPennyAmountVisbility = Visibility.Visible;
                    objvwKYCUserDetails.ViewDetailsbtnVisibility = Visibility.Collapsed;                    
                }
                catch (Exception ex)
                {
                    Logger.WriteException(ex,objLog);
                }
            });

在异步(m)中,我总是得到null,我希望在viewmodel命令OnAcceptClick和OnRejectClick上使用sfDataGrid的selectedItem。 在Popupwindow中单击按钮时如何获取该信息。

请帮助我。

谢谢。

Here I have post the image of popupwindow on button Click(Accept or Reject).
I want selectedItem at viewmodel ICommand async method

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)