comment accéder au contrôle dans DataGrid.RowDetailsTemplate lors de l’exécution

la programmation


comment accéder à txtName dans DataGrid.RowDetailsTemplate au moment de l’exécution :

mon code :

C#
<DataGrid ColumnWidth="*" Name="dgUsers" Grid.ColumnSpan="5" Grid.Row="4" Margin="10,0,10,4"
                                  AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False"
                                  IsReadOnly="True"
                                  SelectionMode="Single" SelectionUnit="FullRow" HeadersVisibility="Column">
                            <DataGrid.Columns>
                                <DataGridTextColumn x:Name="Name" Header="Name"  Binding="{Binding Path=Name}"/>
                                <DataGridTextColumn x:Name="Family" Header="Family"  Binding="{Binding Path=Family}"/>
                            </DataGrid.Columns>
                            <DataGrid.RowDetailsTemplate>
                                <DataTemplate>
                                    <Grid Margin="0,10,0,10" >
                                        <TextBox Name="txtName" Margin="0,2,0,2" Text="{Binding Path=Name}" />
                                        <TextBox Name="txtFamily" Margin="0,2,0,2" Text="{Binding Path=Family}" />
                                        <TextBox Name="txtUserName" Margin="0,2,0,2" Text="{Binding Path=UserName}"  />
                                            <Button Background="#FF7F9D0E" Height="60" Name="btnDelete" TabIndex="8" Width="60" Margin="30,0,30,0" Click="BtnDeleteClick">
                                    </Grid>

                                </DataTemplate>
                            </DataGrid.RowDetailsTemplate>
                        </DataGrid>

je veux accéder à txtName dans l’événement BtnDeleteClick.

Solution 2

La souhaitée Modèle de détails de ligne le contenu est disponible au moment où la ligne est développée.
Jusqu’à cet événement (voir LoadingRowDetails) le contenu est nul et essayez de le retrouver avec DataGridDetailsPresenter.ContentTemplate conduit à une exception :
System.InvalidOperationException

HRésult=0x80131509
Message=Opération Valable uniquement pour les éléments utilisant ce modèle.
Source = Cadre de présentation
Trace de la pile:
sur System.Windows.FrameworkTemplate.FindName (nom de chaîne, FrameworkElement templatedParent)
à ProductionOverviewModule.View.ProductionOrdersGrid.GetRowDetailTemplateGrids() dans fileName.cs:line 86

pour en savoir plus, voir le lien https://stackoverflow.com/questions/5679648/why-would-this-contenttemplate-findname-throw-an-invalidoperationexception-on[^]

コメント

タイトルとURLをコピーしました