silverlight listbox问题寻求帮助

taotbuaa 2010-02-02 04:29:27

<ListBox x:Name="lb" Grid.Row="2">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Width="99">
<Rectangle Width="30" Fill="{Binding Path=Col}"/>
<TextBlock Width="9"/>
<TextBlock Width="60" Text="{Binding Path=Text}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>


private void xbt_Click(object sender, RoutedEventArgs e)
{
try
{
if (lb.SelectedItem != null)
{

int index = lb.SelectedIndex;

lb.Items.RemoveAt(index);
}

}
catch
{
}
}



删除的时候,出现异常,求高人指点怎么删除选定的item?另外如何通过代码添加listboxitem?


...全文
201 5 打赏 收藏 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
taotbuaa 2010-02-03
  • 打赏
  • 举报
回复

谢谢大家的指教。知道怎么回事了。
jv9 2010-02-03
  • 打赏
  • 举报
回复
从数据源删除选项,然后重新绑定Listbox。


List<Customer> listcu = new List<Customer>();
public expender()
{
InitializeComponent();
Loaded += new RoutedEventHandler(expender_Loaded);
}

void expender_Loaded(object sender, RoutedEventArgs e)
{
listcu = new List<Customer>{new Customer("Michael", "Anderberg","12 North Third Street, Apartment 45"),

new Customer("Chris", "Ashton","34 West Fifth Street, Apartment 67"),

new Customer("Cassie", "Hicks","56 East Seventh Street, Apartment 89"),

new Customer("Guido", "Pica","78 South Ninth Street, Apartment 10")};

this.list.ItemsSource = listcu;
}

private void list_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
Customer cu = (Customer)this.list.SelectedItem;
listcu.Remove(cu);


this.list.ItemsSource = null;
this.list.ItemsSource = listcu;
}

public class Customer
{
public String FirstName { get; set; }
public String LastName { get; set; }
public String Address { get; set; }
}



Goldfire_001 2010-02-02
  • 打赏
  • 举报
回复
ListBox如果使用Binding,那么它只是用来呈现的,不能进行数据修改,如果要修改数据,必须在数据源处修改,然后同步(手动或自动)到ListBox上来实现你的功能。

如果你非要在ListBox上进行操作,那么从ListBoxItem派生,添加相应的DP数据,修改Template呈现,然后将数据源在初始化的导入,对ListBox修改完成后需要同步回数据源。这样缺点非常多,繁琐不说,效率低下,性能低下,而且源发生变化的时候还要及时同步数据。。如果不是特殊需求,强烈建议不要这样么做。

哈哈。。说了一大堆废话。其实就是一楼说滴。。
flyingsky00 2010-02-02
  • 打赏
  • 举报
回复
ListBox是Content控件,动态的,在代码里直接添加、清除都很方便
添加
ListBox1.Items.Add(new CheckBox());
清除
ListBox1.Items.Clear();
纷享刘晨 2010-02-02
  • 打赏
  • 举报
回复
绑定做的?如果是用绑定,ListBox.Items是只读的。

修改你的数据源,如果你的数据源实现了INotifyCollectionChanged接口,ListBox是可以立即响应变化的,包括增加项或减少项

8,757

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧