[ad_1]
実行時に DataGrid.RowDetailsTemplate の txtName にアクセスする方法:
私のコード:
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>
イベントBtnDeleteClickでtxtNameにアクセスしたい。
解決策 2
希望 行詳細テンプレート 行が展開された直後にコンテンツが利用可能になります。
このイベントまで(参照) 行の詳細をロード中) コンテンツが null なので、次の方法で検索してみてください DataGridDetailsPresenter.ContentTemplate 例外が発生します:
System.InvalidOperationException
HResult=0x80131509
Message=Operation は、そのテンプレートを使用する要素に対してのみ有効です。
ソース=プレゼンテーションフレームワーク
スタックトレース:
System.Windows.FrameworkTemplate.FindName(文字列名、FrameworkElement templatedParent) で
fileName.cs: 行 86 の ProductionOverviewModule.View.ProductionOrdersGrid.GetRowDetailTemplateGrids() で
詳細については、リンクを参照してください https://stackoverflow.com/questions/5679648/why-would-this-contenttemplate-findname-throw-an-invalidoperationException-on[^]
[ad_2]
コメント