Как очистить поле со списком в WPF? Я попробовал этот код:Удалить поле со списком в WPF
private void btClear1_Click(object sender, RoutedEventArgs e)
{
txtID.Text = String.Empty;
this.cbType.SelectedItem = -1;
}
Как очистить поле со списком в WPF? Я попробовал этот код:Удалить поле со списком в WPF
private void btClear1_Click(object sender, RoutedEventArgs e)
{
txtID.Text = String.Empty;
this.cbType.SelectedItem = -1;
}
Для отмены выбора Установите SelectedIndex
не SelectedItem
cboType.SelectedIndex = -1;
Вы можете установить SelectedItem
или SelectedValue
, но измените его на null
вместо -1 (это указывает на объект, а не целое число).
cboType.SelectedItem = null;
Когда я пытаюсь это сделать, я получаю: Ссылка на объект не установлена в экземпляр объекта. в cbType_SelectionChanged - – user2631662
@ user2631662 Измените событие 'SelectionChanged', чтобы проверить значение null, прежде чем он попытается сделать что-то в выбранном элементе со списком –
как это сделать – user2631662
cbTypion.SelectedItem = -1
очистить выбор cbType.Items.Clear()
, чтобы очистить все элементы
Стандартный комбинированный блок WPF не имеет ничего, называемого 'ClearSelection()'. Может быть, из ASP или что-то еще? –
@KevinDiTraglia Я стою исправлен! Это было некоторое время с тех пор, как я разработал WPF. Да, он доступен в ASP.NET. Ответ обновлен. – Fred
Это действительно зависит от того, был ли 'ComboBox' заполнен просто добавлением' ComboBoxItem' - либо в XAML, либо динамически - или если он был заполнен путем привязки к 'ItemsSource'. Если вы используете последнее, вы не можете выполнить 'cbType.Items.Clear()' - вы получаете: 'Операция недействительна, пока ItemSource используется. Доступ и изменение элементов с помощью ItemsControl.ItemsSource вместо .'. – vapcguy
Вы можете сбросить поле со списком путем привязки на странице XAML.
Например, в этом поле со списком поле на странице XAML:
text={Binding viewmodelobject Name.property Name}
А потом в ViewModelPage
:
viewmodelobject Name.property Name="";
Полностью клиринговые окнеОтмеченные
Для Googlers, так как заголовок вводящий в заблуждение, если мы говорим об очистке предметов из коробки, я видел несколько ответов, говорящих, чтобы использовать cbType.Items.Clear()
. Это зависит от того, как были загружены элементы. Вы могли бы жестко закодировать их в XAML, динамически добавлять их с помощью функции во время выполнения, использовать тип привязки данных и/или загружать их в .ItemSource
. Он будет работать для всех, кроме последнего.
При использовании .ItemSource
для загрузки ComboBox
через DataTable-х DefaultView
, например, вы не можете просто сделать cbType.Items.Clear()
. Так как метод заполнения раскрывающегося списка не был включен в этот вопрос, я полагаю, что когда вы установите .ItemSource
, вы должны сделать:
cbType.ItemsSource = null;
вместо этого. В противном случае, если вы пытаетесь cbType.Items.Clear()
вы получите:
Operation is not valid while ItemSource is in use. Access and modify
elements with ItemsControl.ItemsSource instead
Очистка выбранного элемента
Я вернулся и увидел замечание OP, заявив, что желание было, чтобы очистить выбор, а не коробка. Для этого оставлены другие ответы:
cbType.SelectedIndex = -1;
cbType.Text = ""; // I've found the first line does this for me, as far as appearances, but found other postings saying it's necessary - maybe they were using the property and it wasn't getting cleared, otherwise
cbType.Items.Clear? – Fred
Очистить, как в случае удаления всех элементов, или очистить, как при очистке выделения? –
Очистить выбор – user2631662