M-V-VM 패턴을 사용하여 데이터 개체 목록에서 항목을 제거하는 개념을 분리하고 현재 UI 구현에서 직접 제거하십시오. 두 사람은 바인딩을 제외하고는 서로에 대해 알 필요가 없습니다.
MVVM 패턴을 사용할 때 ViewModel에서 부울 "IsSelected"속성을 노출하십시오.
public class SimpleViewModel : BaseViewModel //For INotifyPropertyChanged, etc
{
public IList<SimpleBusinessObject> ViewModelItems;
public SimpleViewModel()
{
ViewModelItems = new ObservableList<SimpleBusinessObjectViewModel>();
}
}
public class SimpleBusinessObjectViewModel
{
public bool ViewModelIsSelected { get; set; }
public SimpleBusinessObjectViewModel()
{
ViewModelIsSelected = false;
}
}
다음으로,보기에 이런 식으로 뭔가를 시도 :
<Style TargetType="{x:Type ListViewItem}">
<Style.Triggers>
<Setter Property="IsSelected" Value="{Binding ViewModelIsSelected}"
</Style.Triggers>
</Style>
<ListView ItemsSource={Binding ViewModelItems}>
//here you can insert how you want to display a ListViewItem
</ListView>
이, 편집을 추가 할 수 있도록하고 뷰 모델의 목록에서 항목을 제거합니다 - 그것은 실제의 ListView 인 것처럼처럼. 여기에서 실제로 ListViewItem을 확인하지 않고도 각 항목의 IsSelected (ListView와의 마우스 상호 작용에 응답 함)를 확인할 수 있습니다. 이것은 훨씬 깨끗하고 유지 보수가 용이 한 솔루션이 될 것입니다.
귀하의 비즈니스 모델은 귀하의 ViewModel에 대해 알고 있습니까? 비지니스 로직과 프리젠 테이션 로직의 정상적인 분리를 뒤집어 놓는 것은 그리 좋은 생각이 아닙니다. – jpierson
좋은 지적. 나는 그 모범을 새롭게 할 것이다. –