WPF DataGridのセルをクリックして値を取得する
成功パターン
XAML
DataGrid x:Name="Dg_tm_message" HorizontalAlignment="Left" Height="593" Margin="26,10,0,0" VerticalAlignment="Top" Width="1238" SelectionMode="Single" IsReadOnly="True" SelectedCellsChanged="Dg_tm_message_SelectedCellsChanged_2">
C#
イベントはSelectedCellsChangedを利用
private void Dg_tm_message_SelectedCellsChanged_2(object sender, SelectedCellsChangedEventArgs e)
{
int i = Dg_tm_message.SelectedIndex;
DataGridRow dgr = Dg_tm_message.ItemContainerGenerator.ContainerFromIndex(i) as DataGridRow;
string UserID = ((TextBlock)Dg_tm_message.Columns[0].GetCellContent(dgr)).Text;
MessageBox.Show(UserID);
}
解説
データグリッド Dg_tm_message
SelectedIndex にて、RowIndex(何行目か?)が返る
これをItemContainerGenerator.ContainerFromIndex(i)を利用して DataGridRowを作成
その中で、(TextBlock)Dg_tm_message.Columns[0].GetCellContent(dgr)).Textを利用して、列0に入っている、テキストを取得する
なぜかnullが返る
失敗パターン
<DataGrid x:Name="Dg_tm_message" HorizontalAlignment="Left" Height="593" Margin="26,10,0,0" VerticalAlignment="Top" Width="1238" SelectionMode="Single" IsReadOnly="True" SelectedCellsChanged="Dg_tm_message_SelectedCellsChanged_2" SelectionUnit="Cell">
SelectionUnit=”Cell”
していると、Dg_tm_message.SelectedIndex は -1になる
コメント