샘플 mvvm 응용 프로그램이 있습니다. UI에는 텍스트 상자, 버튼 및 콤보 상자가 있습니다. 텍스트 상자에 내용을 입력하고 버튼을 누르면 입력 한 텍스트가 observablecollection에 추가됩니다. 콤보 박스는 그 컬렉션에 묶여있다. 새롭게 추가 된 문자열을 자동으로 표시하도록 콤보 박스를 얻으려면 어떻게합니까?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
다른 2 개) 및 매개 변수없이 AddNewItem
방법.
방법은 명령에서 트리거하지만, 명령에 대한 표준 클래스가없는, 그래서 코드 숨김에서 호출 할 수 있습니다 : 선택 그래서 당신이 명시 적으로 추가 된 항목을 설정해야합니다
((MainViewModel)this.DataContext).AddNewItem();
컬렉션에 추가 한 후
ComboBox
클래스의 OnItemsChanged
메서드가 보호되어있어 사용할 수 없기 때문에.
3
ComboBox가 ObservableCollection에 바인딩 된 경우 ComboBox는 컬렉션이 변경되는 즉시 업데이트됩니다.
ObservableCollection을 사용하면 이점이 있습니다. UI를 업데이트하기 위해 별도의 코딩 작업을 수행 할 필요가 없습니다.
이것이 보이는 동작이 아니라면, 아마도/xaml이라는 코드를 게시 할 수 있습니다.
관련 문제
- 1. WPF - DataTemplate의 내용 새로 고침
- 2. PHP의 하위 카테고리 콤보 상자 새로 고침?
- 3. Silverlight 새로 고침 데이터 콤보 상자
- 4. PHP 콤보 상자 AJAX 새로 고침
- 5. cfwindow 내용 새로 고침
- 6. 새로 고침 UltraCombo 내용
- 7. WPF ComboBox 새로 고침
- 8. 콤보 상자 내용 지우기
- 9. WPF "flying"콤보 상자
- 10. WPF 자동 검색 콤보 상자 항목
- 11. 새로 고침 페이지 자동
- 12. 자동 새로 고침 MVC보기
- 13. 페이지 자동 새로 고침
- 14. 설치시 자동 새로 고침
- 15. 사이트 자동 새로 고침
- 16. DBLookupComboBox 및 내용 새로 고침
- 17. jQuery PHP 새로 고침 내용
- 18. flex에서 데이터 격자 새로 고침/새로 고침
- 19. WPF 페이지 새로 고침
- 20. 자동 콤보 상자
- 21. WPF 새로 고침 정적 리소스
- 22. 새로 고침 후 변경 내용 표시
- 23. WPF 콤보 상자 하이라이트
- 24. WPF 콤보 상자 바인딩
- 25. WPF 콤보 상자 - 태그
- 26. WPF 콤보 상자 ItemsSource
- 27. WPF 콤보 상자 + MouseLeftButtonDown
- 28. WPF : ComboBox가 열리지 않으면 바인딩에만 새로 고침
- 29. 대화 상자 위치 새로 고침
- 30. 새로 고침없이 페이지 자동 새로 고침