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();
                });
            
        }

        ...........


うーん・・・・