我有一个示例mvvm应用程序。用户界面有一个文本框,一个按钮和一个组合框。当我在文本框中输入内容并点击按钮时,我输入的文本被添加到可观察集合中。 Combobox绑定到该集合。如何让组合框自动显示新添加的字符串?WPF - 自动刷新组合框内容
6
A
回答
5
据我所知,你想添加一个项目并选择它。 下面是如何使用ViewModel和绑定完成的示例。
的Xaml:
<StackPanel>
<TextBox Text="{Binding ItemToAdd}"/>
<ComboBox ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" />
<Button Content="Add" Click="Button_Click"/>
</StackPanel>
视图模型:
public class MainViewModel:INotifyPropertyChanged
{
public ObservableCollection<string> Items { get; set; }
public string ItemToAdd { get; set; }
private string selectedItem;
public string SelectedItem
{
get { return selectedItem; }
set
{
selectedItem = value;
OnPropertyChanged("SelectedItem");
}
}
public void AddNewItem()
{
this.Items.Add(this.ItemToAdd);
this.SelectedItem = this.ItemToAdd;
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
的MainViewModel
有3个属性(一个用于TextBox
和两个其他用于ComboBox
)和不具有参数的方法AddNewItem
。
的方法可以从命令触发,但对于命令没有标准的课,所以我将其称之为从代码隐藏:作为选择
((MainViewModel)this.DataContext).AddNewItem();
所以,你必须明确地设置添加的项目将其添加到集合后。
由于ComboBox
类的方法OnItemsChanged
受到保护,不能被使用。
3
如果ComboBox绑定到一个ObservableCollection,组合框会尽快集合更改更新。
这是使用一个ObservableCollection的优势 - 你不需要做任何额外的编码来更新UI。
如果这不是你看到的行为,也许你可以张贴一些代码/ XAML。
相关问题
- 1. 刷新WPF组合框
- 2. WPF组合框数据绑定到DataTable,自动刷新
- 3. 自动刷新Div内容
- 4. 自动刷新dgrid内容
- 5. WPF - 刷新DataTemplate的内容
- 6. WPF组合框不显示内容
- 7. 刷新数据绑定组合框的内容C#问题
- 8. PHP组合框AJAX刷新
- 9. WPF自动完成组合框
- 10. WPF组合框自定义滚动条
- 11. C#WPF组合框自动开关号
- 12. 如果内容更改,自动刷新JS数组?
- 13. 组合框列表框刷新
- 14. WPF:组合框只刷新到绑定时从来不开
- 15. 组合框内的复选框WPF
- 16. C#Databound组合框自动更新
- 17. 组合框的值自动更新
- 18. 刷新jQuery UI对话框的内容
- 19. 如何刷新对话框内容
- 20. 刷新对话框的内容
- 21. 刷新JTree内容
- 22. 刷新DataGridView内容
- 23. 刷新UltraCombo内容
- 24. 刷新cfwindow内容
- 25. 刷新流内容
- 26. 刷新内容UITextView
- 27. 动态内容的tableViewCell中的自动刷新
- 28. WPF级联组合框,从属组合框不更新
- 29. VB.net:如何“刷新”我的组合框?
- 30. 如何刷新vb.net中的组合框