DataGridで、初期ロード時にいきなりSelectionChangedイベントがとぶ
Silverlight2には拡張コンポーネント(基本コンポーネントじゃないのね)にDataGridがあるのですが、
SelectionChangedイベントでびっくりしたので書いておく。
こんなDataGridで、
<my:DataGrid x:Name="EmpGrid" Grid.Row="1" AutoGenerateColumns="False"> <my:DataGrid.Columns> <my:DataGridTemplateColumn Header="ID"> <my:DataGridTemplateColumn.CellTemplate> <DataTemplate> ......
で、C#側で普通にこうやっておく。
private void UserControl_Loaded(object sender, RoutedEventArgs e) { doSome(...) EmpGrid.SelectionChanged += EmpGrid_SelectionChanged;
すると、初期ロード時でもEmpGrid_SelectionChangedイベントリスナが動く。
ちょっとこの挙動はびっくりするなあ。SelectionChangedイベントはユーザからの操作で動くものだと
おもっていたので。たしかにDataGridの初期化時にも先頭の項目にフォーカスするけどさあ^^;
というわけでわざわざ別コンポーネントにFocusさせておくことにした。
public partial class Page : UserControl { public Page() { InitializeComponent(); } private void UserControl_Loaded(object sender, RoutedEventArgs e) { //最後のはコールバック doHoge(sender, e, () => { EmpGrid.SelectionChanged += EmpGrid_SelectionChanged; button.Focus(); }); } ...........
うーん・・・・