何も選択されないようにバインドされたデータグリッドを設定しようとしています。
ページが読み込まれてcontactsListBySchoolIDViewSource
作成されるとView
、null に設定できます。ページが読み込まれ、データグリッドで何も選択されていない状態でボタンをクリックすると、アプリケーションは正常に動作します。データグリッド内のセルが選択された後にボタンをクリックするとtry..catch
、エラーは発生しませんが、「インデックスが配列の範囲外です」というメッセージボックスが表示されます。メッセージボックスで「OK」をクリックすると、データグリッドで希望どおりに何も選択されません。
「contactsViewSource」は問題ありません。
VS 2012、WPF、C#、および .nrt 4.5 を使用しています。
私の質問は、メッセージボックスが表示されないようにする方法です
<Page.Resources >
<!-- Bound to a "details view" -->
<CollectionViewSource x:Key="contactsViewSource" Source="{Binding Contacts, Source={StaticResource mTAdminDataSet}}"/>
<!-- Bound to a datagrid -->
<CollectionViewSource x:Key="contactsListBySchoolIDViewSource" Source="{Binding ContactsListBySchoolID, Source={StaticResource mTAdminDataSet}}"/>
</Page.Resources>
private void Page_Loaded(object sender, RoutedEventArgs e)
{
try
{
MTAdmin.MTAdminDataSetTableAdapters.ContactsListBySchoolIDTableAdapter mTAdminDataSetContactsListBySchoolIDTableAdapter = new MTAdmin.MTAdminDataSetTableAdapters.ContactsListBySchoolIDTableAdapter();
mTAdminDataSetContactsListBySchoolIDTableAdapter.Fill(mTAdminDataSet.ContactsListBySchoolID, schoolId);
contactsListBySchoolIDViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("contactsListBySchoolIDViewSource")));
contactsListBySchoolIDViewSource.View.MoveCurrentTo(null);
MTAdmin.MTAdminDataSetTableAdapters.ContactsListBySchoolIDTableAdapter mTAdminDataSetContactsListBySchoolIDTableAdapter = new MTAdmin.MTAdminDataSetTableAdapters.ContactsListBySchoolIDTableAdapter();
mTAdminDataSetContactsListBySchoolIDTableAdapter.Fill(mTAdminDataSet.ContactsListBySchoolID, schoolId);
contactsListBySchoolIDViewSource = ((System.Windows.Data.CollectionViewSource)(this.FindResource("contactsListBySchoolIDViewSource")));
contactsListBySchoolIDViewSource.View.MoveCurrentTo(null);
//other code.....
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void contactsButton_Click(object sender, RoutedEventArgs e)
{
try
{
//bound to grid with details(textboxes)
contactsViewSource.View.MoveCurrentTo(null);
//bound to the datagrid
// THIS IS THE LINE OF CODE THROWING THE ERROR
contactsListBySchoolIDViewSource.View.MoveCurrentTo(null);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
ありがとう!!