考慮使用M-V-VM模式來分離從數據對象列表中刪除項目的概念,並直接從您當前的UI實施中刪除它們。除了Bindings,兩人不需要了解彼此。
當您使用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。從這裏,您還可以檢查每個項目的IsSelected(響應鼠標與ListView的交互),而不實際檢查ListViewItem。這將是一個更清潔,可維護的解決方案。
您的業務對象知道您的ViewModel?這不是一個好主意,因爲它顛倒了業務邏輯和表示邏輯的正常分離。 – jpierson 2010-06-04 14:59:39
偉大的一點。我會更新我的例子。 – 2010-06-22 23:05:00