【解决方案】ItemsControl删除元素,但仍然显示它们
例如一个选手机号的程序,有一系列手机号可选。有些手机号已经被人选走了,列表仍然显示它们,但多加一条删除线,如图。

如图,淡色的、被线划掉的就是已经被选走的。这样的功能该如何实现呢?
外界可以把这种控件视为ListBox,加元素就是Items.Add,删元素就是Items.Remove。外界不应去关心如何“假删”。
此控件的应用范围应更为广泛,允许用模板来自定义被删除后的显示。
另外,出于个人爱好,此控件内部应尽量简单,少写代码;不重复发明微软专家已经发明的轮子。
实现 private void Button2_Click(object sender, RoutedEventArgs e) { myItemsControl.Items.Remove(myItemsControl.SelectedItem); }