ObservableCollection에 바인딩 된 ComboBox가 있는데,이 값은 tbPublications
으로 채워집니다. 그런 다음 새 레코드를 tbPublications
에 삽입하는 다른 Create 폼을 시작하는 DataGrid에서 행을 선택합니다.ComboBox SelectedIndex MVVM WPF
작성 양식을 닫고 ComboBox 양식으로 돌아 가면 새 항목 하나를 지우고 다시 읽음으로써 ObservableCollection
으로 사용자를 방금 작성한 항목으로 되돌려 놓습니다. 그런 다음 ComboBox는 새로 채워진 컬렉션의 항목 하나를 모두 표시합니다.
내 문제는 내 ComboBox 폼으로 돌아갈 때 새 게시가 ComboBox 디스플레이에서 선택된 항목으로 설정되어 있지 않기 때문에 사용자가 ComboBox를 클릭하고 항목을 선택해야한다는 것입니다.
페이지로드시 ComboBox에 ObservableCollection
전체를 표시하려고하므로 XAML보기에서 SelectedIndex = "0"
을 사용할 수 없습니다. 어쩌면 같은
어쩌면이 문제를 해결하기 위해 뷰 모델의 메소드를 사용하는 방법은 없나요
, 뭔가 .. private void SetSelectedIndex()
{
if (MyObservableCollection.Count == 1)
{
//Set selected indexer to "0";
}
}
찾을 수는 깨끗한 'MVVM'해결책이 있는지 확실하지 않은이에 대한 해결책, 여기
if (_ModelPublicationsObservableList.Count == 1)
{
SelectedPublication = _ModelPublication;
SetSelectedIndex();
}
가 selectedIndex의를 현재 주 창을 얻고 설정하는 방법은 다음과 같습니다 : ...
을 내 ObservableCollection에에서 읽은 후 나는이 메소드를 호출
private void SetSelectedIndex()
{
ArticlesDataGridWindow singleOrDefault = (ComboBoxWindow)Application.Current.Windows.OfType<ComboBoxWindow>().SingleOrDefault(x => x.IsLoaded);
singleOrDefault.comboBox1.SelectedIndex = 0;
}
+1. 이것은 개념적으로 "선택된 값"이'ComboBox'에있는 항목의 * 속성 인 경우를 제외하고는 (항목 자체가 아닌)'SelectedValue'를 사용할 수있는 경우를 제외하고는 거의 항상 갈 것입니다. 및'SelectedValuePath'. MVVM을 따라갈 때'SelectedIndex'를 사용할 이유가 거의 없습니다. –
예, ViewModel에 SelectedPublication 속성이 있습니다.내 XAML이 'SelectedItem = "{SelectedPublication, Mode = TwoWay Binding"으로 설정되어 있지만 ComboBox에 ObservableCollection의 행이 하나도 표시되지 않으면 드롭 다운을 클릭하고 선택해야합니다. – Hardgraf
편집 된, 아마도 가장 깨끗한 MVVM 솔루션이 아닙니다 ... – Hardgraf