1

CheckBox chkAddToGroupこれをアクティブにする がありComboBox cmbGroupます。がチェックされている場合chkAddToGroup、次のことが起こります。

ObservableCollection<Group> groupColl = new ObservableCollection<Group>() { };
foreach (Group g in GroupHandler.GroupList)
{
    groupColl.Add(g);
}
cmbGroup.ItemsSource = groupColl;
cmbOrganisation.SelectedIndex = 0;
cmbGroup.IsEnabled = true;

ご覧のとおり、cmbGroupに接続されていますgroupColl(DisplayMemberPathは外部に設定されていますStyle)。

フォームをリセットしようとすると、問題が発生します。したがって、私はButton btnReset. btnResetユーザーがアプリケーションをクリックすると、次のようになります。

chkAddToGroup_Unchecked(this, null);

次に、chkAddToGroup_Unchecked(object sender, RoutedEventArgs e)次のことが起こります。

private void chkAddToGroup_Unchecked(object sender, RoutedEventArgs e)
    {
        cmbGroup.ItemsSource = null;
        cmbGroup.IsEnabled = false;
        cmbGroupRole.ItemsSource = null;
        cmbGroupRole.IsEnabled = false;
    }

ご覧のとおりItemsSource = null、コンボボックスをクリアするために設定しました。(他の方法はわかりません)

ユーザーがリセット ボタンを押す前にチェックボックスをオンにしなかった場合、特別なことは何も起こりません。ただし、ユーザーがチェックボックスをオンにしてアイテムを選択した場合NullReferenceException、アプリケーションが実行を試みるとすぐにcmbGroup.ItemsSource = null;

なぜこれが起こるのですか?何か案が?

4

2 に答える 2

0

これが WPF に当てはまるとは断言できませんが、試してみることはできます。久しぶりにWPFを見ました。

cmbGroup.Items.Clear();

また

for(int i=0; i<cmbGroup.Items.Count; i++)
{
   cmbGroup.RemoveAt(i);
}

または空のリストを使用します

ObservableCollection<Group> emptyList = new ObservableCollection<Group>();
cmbGroup.ItemsSource = emptyList;
于 2012-09-16T20:14:48.553 に答える
0

あなたはで試すことができます

cmbGroup.Items.Clear();

リンク: http://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.items.aspx

リンク: http://msdn.microsoft.com/en-us/library/system.windows.controls.itemcollection.clear.aspx

于 2012-09-16T20:17:56.147 に答える