我有一个示例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. 刷新端口Namein组合框 - WPF
- 6. 如何刷新组合框在WPF
- 7. WPF - 刷新DataTemplate的内容
- 8. 组合框刷新
- 9. WPF组合框不显示内容
- 10. WPF中的组合框标题内容
- 11. 刷新数据绑定组合框的内容C#问题
- 12. 文本框内容刷新
- 13. 自动刷新Div内容 - NO PHP
- 14. 使用AJAX自动刷新内容
- 15. Mediawiki中的自动刷新内容
- 16. WPF Datagrid-自动刷新
- 17. 用C++刷新组合框?
- 18. PHP组合框AJAX刷新
- 19. C#WPF组合框自动开关号
- 20. WPF自动完成组合框
- 21. WPF组合框自定义滚动条
- 22. WPF自动搜索组合框项目
- 23. 组合框,WPF非常新
- 24. 如果内容更改,自动刷新JS数组?
- 25. 动态刷新div内容
- 26. 组合框列表框刷新
- 27. 在C#中更新/刷新组合框#
- 28. 添加项目后组合框不刷新C#WPF
- 29. WPF:组合框只刷新到绑定时从来不开
- 30. 组合框内的复选框WPF