Silverlight - 如何以编程方式选择数据绑定ListBox中的项目?

时间:2009-11-12 00:45:11

标签: silverlight listbox data-binding

我有一个ListBox(AvailableDevicesListBox),它使用Silverlight 3中的数据绑定进行填充。绑定是 DeviceDTO 类型的对象的集合。它被设置为允许多个选择,这一切都正常。

但是,我试图让'Select All'按钮工作,如果我遍历AvailableDevicesListBox.Items集合,我返回 DeviceDTO 对象,而不是ListBoxItem对象,所以我无法选择/取消选择列表框中我想要的项目。

有人可以提出任何建议吗?

2 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您需要使用ListBox的SelectedItems属性来添加您需要选择的所有项目(如果您需要全部选择,我猜所有项目都是如此)。下面是一个小例子,对我来说很好:

// create collection of DeviceDTO objects
List<DeviceDTO> listItems = new List<DeviceDTO>();

listItems.Add(new DeviceDTO("test0"));
listItems.Add(new DeviceDTO("test1"));
listItems.Add(new DeviceDTO("test2"));

// bind listbox to the collection
testListBox.ItemsSource = listItems;

// select all items
foreach (DeviceDTO item in listItems)
    testListBox.SelectedItems.Add(item);

希望这有帮助,尊重

答案 1 :(得分:0)

我这是一个快速的方法:

的Xaml

<StackPanel x:Name="LayoutRoot" Background="White">
    <ListBox x:Name="list" SelectionMode="Multiple" />
    <Button Content="Select All" Width="100" Click="Button_Click" />
</StackPanel>

代码 公共MainPage() {     的InitializeComponent();

var items = new List<string>(){"one", "two", "three", "four", "five"};
list.ItemsSource = items;

}

private void Button_Click(object sender, RoutedEventArgs e)
{
    foreach (var item in list.ItemsSource)
    {
        list.SelectedItems.Add(item);
    }
}