Переупорядочение списка Silverlight - MVVM-stylee - PullRequest
0 голосов
/ 06 января 2011

Я использую службы RIA для обслуживания сущностей в приложении Silverlight с поддержкой MVVM-Light.

У меня есть ViewModel, который представляет CollectionViewSource сущностей в виде списка в представлении.Причина, по которой я использую CollectionViewSource, заключается в том, что я могу управлять выбранным элементом в ViewModel;когда создается новый элемент, я могу создать его и затем выбрать его для дальнейшего редактирования (выбор элемента в списке позволяет редактировать этот элемент в форме данных).

Мне нужно включить перетаскивание для спискаразрешить изменение порядка предметов.Я рассмотрел использование ListBoxDragDropTarget набора инструментов Silverlight для включения этой функции, но она не работает - я предполагаю, что это потому, что мне нужно установить для ListSource ListSource значение ObservableCollection.

Если я изменю CollectionViewSource в ViewModelв ObservableCollection, как я могу программно изменить выбранный элемент списка из ViewModel?

Есть идеи?

Ответы [ 2 ]

1 голос
/ 06 января 2011

Вы можете иметь отдельное свойство в вашей ViewModel, а именно SelectedThing и привязать ListBox.SelectedItem к нему

<ListBox ItemsSource="{Binding TheCollection}" SelectedItem="{Binding SelectedThing}" />
0 голосов
/ 06 января 2011

Вы можете обернуть свои ObservableCollection<T> в CollectionViewSource ... как видно здесь ... так, чтобы это был резервный набор данных, используемых CollectionViewSource для получения INotifyCollectionChanged поведение без потери выгоды от CollectionViewSource; который вам нужен для выбора товара.

    <UserControl.Resources>
       <local:DataSource x:Key="dataSource" />
          <CollectionViewSource x:Name="cvs" 
                    Source="{Binding Names, Source={StaticResource dataSource}}">
          </CollectionViewSource>
    </UserControl.Resources>

    ...

    <ListBox ItemsSource="{Binding Source={StaticResource cvs}}" 
               Margin="5,5,5,1" Grid.ColumnSpan="4" />

Пример из конца в конец от Tim Heuer можно найти здесь , который также должен помочь вам в достижении полного решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...