我有一個示例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