잠시 동안 WPF로 작업 해오고 있지만 도움이 필요합니다. 내가 탭 1에서 멀리 이동 한 다음 선택이 제거됩니다 다시에 올 때마다WPF ComboBox SelectedItem
<TabControl>
<TabItem Header="1">
<ComboBox ItemsSource="{Binding MyList}" SelectedItem="{Binding MyListSelection}"/>
</TabItem>
<TabItem Header="2"/>
</TabControl>
:
은 내가ComboBox
아래와 같이 있습니다. 그 이유는 컨트롤이 범위를 벗어나서 다시 돌아올 때 컨트롤이 파괴된다는 것입니다.하지만 그 과정에서 SelectedItem은 null이되어 실제로 사용자가 원하는 것이 아니며 UI로 인한 이벤트입니다. 수명주기.
그래서 가장 좋은 경로는 무엇일까요? MVVM을 사용하여이 응용 프로그램을 빌드 중이므로 My ViewModel의 MyListSelection 속성에 대한 호출을 무시할 수 있지만 ComboBoxes가 모두 있고 WPF의 버그를 고려하여 ViewModel을 수정하는 것을 좋아하지 않습니다.
WPF ComboBox를 하위 클래스로 만들 수 있지만 SelectedItemChanging 이벤트가 없습니다. SelectedItem이 변경되었을 때만 처리기를 추가 할 수 있습니다.
아이디어가 있으십니까?
UPDATE :
좋아, 내 문제가 재현 얻을 수없는 이유를 내가 발견 벽에 내 머리를 구타 후. 어떤 이유로 목록 항목 유형이 클래스 인 경우 SelectedItem은 WPF에 의해 null로 설정되지만 값 유형 인 경우에는 그렇지 않습니다.
public class TestListViewModel : VMBase
{
public TestListViewModel()
{
TestList = new List<TestViewModel>();
for (int i = 0; i < 10; i++)
{
TestList.Add(new TestViewModel(i.ToString()));
}
}
public List<TestViewModel> TestList { get; set; }
TestViewModel _SelectedTest;
public TestViewModel SelectedTest
{
get { return _SelectedTest; }
set
{
_SelectedTest = value;
OnPropertyChanged("SelectedTest");
}
}
}
public class TestViewModel : VMBase
{
public string Name {get;set;}
}
내가 변경할 때 그래서 TestList가 int 형하고의 selectedItem은 동일하게 유지 앞뒤로 탭 사이 이동 :
여기 (VMBase가에서 INotifyPropertyChanged를 구현 단지 추상 클래스입니다) 내 테스트 클래스입니다. 그러나 유형이 TestViewModel
일 때 Tabitem이 초점이 맞지 않으면 SelectedTest가 null로 설정됩니다.
무슨 일 이니?
목록 형식이 참조 형식 인 경우 동일한 형식으로 동작하지 않습니다. 내 업데이트 된 게시물보기 – Jose