WPF와 MVVM 패턴을 사용하고 있습니다. 목록에 바인딩 된 모든 콤보 상자가 제대로 작동하지만 필터링을 위해 CollectionViewSource
을 사용하는 계단식 드롭 다운이 있습니다. 세터 (대답을 검색하는 동안 문제가있는 다른 사람을 보았을 때)와 마찬가지로 필터링이 작동하지만 초기 값을 설정할 수 없습니다. 나는 몇 가지 방법을 시도했지만 아무도 선택한 항목에 영향을주는 것 같지 않습니다.CollectionViewSource에 바인딩 된 Combobox의 초기 값을 설정하십시오.
뷰 모델의 ctor에, 및 속성 세터 (_ticket.SelectedSubstatus이 모델 생성자에서 설정) : 여기
public TicketViewModel()
{
_ticket = new TicketModel();
SubstatusList = CollectionViewSource.GetDefaultView(GetStatusList());
SubstatusList.Filter = (x) => { return (int)(x as Substatus).IST_MAIN_STATUS == (int)SelectedStatus.IST_STATUS_ID; };
SubstatusList.MoveCurrentTo(_ticket.SelectedSubstatus);
SelectedSubstatus = _ticket.SelectedSubstatus;
Substatus test = (Substatus)SubstatusList.CurrentItem;
}
public Substatus SelectedSubstatus
{
get { return _ticket.SelectedSubstatus; }
set
{
if (value == _ticket.SelectedSubstatus ||value == null)
return;
_ticket.SelectedSubstatus = value;
_ticket.Issue.IS_SUBSTATUS_ID = value.IST_SUBSTATUS_ID;
base.OnPropertyChanged("SelectedSubstatus");
}
}
및
가<ComboBox HorizontalAlignment="Stretch" Margin="15,0,0,0"
Name="comboBox1" VerticalAlignment="Bottom"
Grid.Column="2" Grid.Row="1" FontSize="12"
IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding Path=SubstatusList}"
SelectedItem="{Binding Path=SelectedSubstatus, Mode=TwoWay}"
DisplayMemberPath="IST_NAME"/>
CollectionViewSource
에서 현재 항목이 null 콤보 상자 XAML입니다 MoveCurrentTo()로 설정 한 직후 및 테스트로 선택했을 때. 내가 도대체 뭘 잘못하고있는 겁니까?
당신은 그것을 가지고 있습니다. 'SelectedSubstatus'는 null이 아니며 드롭 다운을 선택하면'SelectedSubstatus'가 제대로 업데이트됩니다. 이것이 맞는 것이라고 생각하지만,'SubstatusList.MoveCurrentTo (_ticket.SelectedSubstatus);'가'SubstatusList'에서 객체를 찾을 수 없다면 설정하지 않을 것입니다. SubstatusList에서 CurrentItem을 어떻게 설정할 수 있습니까? – Tyrsius
또한 하위 상태는 EF4 개체입니다. 부분 클래스에 해당 재정의 배치를 시도했지만 'ID'는 유효한 속성이 아닙니다. 나는 Intellisense에서 작동했을만한 것을 보지 못했습니다. – Tyrsius
'SubStatus' 클래스에서'Equals()'를 덮어 쓰면 데이터가 같으면 true를 반환합니다. 지금 메모리에서의 참조가 동일하다면 참일 수 있습니다. Id 속성이 예제입니다. – Rachel