【问题标题】:Binding a listbox SelectedItem to an Observable Collection?将列表框 SelectedItem 绑定到可观察集合?
【发布时间】:2011-02-16 09:12:39
【问题描述】:

我在 WPF 中有一个 Listbox,其 SelectionMode 设置为 Multiple,并且可以多选 Listbox 中的项目。但是,SelectedItem 不会更新它所绑定的 Observable Collection。

有没有办法将 ListBox 中的多个选定项绑定到 Observable Collection?

【问题讨论】:

标签: wpf listbox selecteditem


【解决方案1】:

我不知道 mvvm 这样做的方式, 我有一个结合了 mvvm 和代码隐藏的工作解决方案。

代码隐藏

private void lstbox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
    {
        var listBox = sender as ListBox;
        if (listBox == null) return;

        var viewModel = listBox.DataContext as Window1ViewModel;
        if (viewModel == null) return;

        viewModel.ListOfSelectedItems.Clear();

        foreach (Window1ViewModel.States item in listBox.SelectedItems)
        {
            viewModel.ListOfSelectedItems.Add(item);
        }
      }

视图模型

    private ObservableCollection<States> _listofselecteditems;
    public ObservableCollection<States> ListOfSelectedItems
    {
        get
        {
            return _listofselecteditems;
        }
        set
        {
            _listofselecteditems = value;
            RaisePropertyChanged(() => ListOfSelectedItems);
        }
    }

Xaml

            <ListBox x:Name="lstbox" 
             SelectionChanged="lstbox_SelectionChanged_1"
             ItemsSource="{Binding StatesList,Mode=TwoWay}"
             SelectionMode="Multiple" >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <CheckBox 
                        IsChecked="{Binding Path=IsSelected,Mode=TwoWay}"
                        Content="{Binding StateName}" />
                    <TextBox Margin="8,0,0,0" Text="{Binding SOmeProperty}" IsEnabled="{Binding Path=IsSelected}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>

【讨论】:

    猜你喜欢
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 2020-12-29
    • 2011-12-03
    相关资源
    最近更新 更多