private void MyDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (MyDataGrid.SelectedItem != null) { if (MyDataGrid.SelectedGraphics.Count == 1) { var graphics = (sender as FeatureDataGrid).SelectedGraphics; foreach (var g in graphics) { // get id var id = g.Attributes["STATE_NAME"]; StateName = (string)id; break; } MessageBox.Show(StateName); } } }
Solved! Go to Solution.
if (e.PropertyName == "MySelectionGraphicsLayer" && MyDataGrid.SelectedGraphics.Count == 1)
MessageBox.Show(MyDataGrid.SelectedGraphics.First().Attributes["NAME"].ToString());
private void GraphicsLayer_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == "SelectedGraphics" && MyDataGrid.SelectedGraphics.Count == 1) MessageBox.Show(MyDataGrid.SelectedGraphics.First().Attributes["NAME"].ToString()); }
private void GraphicsLayer_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == "SelectedGraphics" && MyDataGrid.SelectedGraphics.Count == 1) MessageBox.Show(MyDataGrid.SelectedGraphics.First().Attributes["NAME"].ToString()); }
Maybe depending on the order the SelectionChanged events are fired.
When the datagrid selection changes, the graphics layer may have not changed yet (likely the toolkit subscribes to this event as well in order to change the graphics selection).
It might be more accurate to use the PropertyChanged event of the GraphcisLayer.
if (e.PropertyName == "MySelectionGraphicsLayer" && MyDataGrid.SelectedGraphics.Count == 1) MessageBox.Show(MyDataGrid.SelectedGraphics.First().Attributes["NAME"].ToString());
if (e.PropertyName == "MySelectionGraphicsLayer" && MyDataGrid.SelectedGraphics.Count == 1)
MessageBox.Show(MyDataGrid.SelectedGraphics.First().Attributes["NAME"].ToString());
private void GraphicsLayer_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == "SelectedGraphics" && MyDataGrid.SelectedGraphics.Count == 1) MessageBox.Show(MyDataGrid.SelectedGraphics.First().Attributes["NAME"].ToString()); }