Почему этот код не привязывает SelectedItem к свойству? - PullRequest
1 голос
/ 07 октября 2010

Я довольно новичок в XAML, и моя первая задача в новой работе - распутать особенно неприятный сборник спагетти-кода. Изучение XAML в то же время, что и распутывание этого ужастика, выходит за рамки моего понимания, поэтому мои извинения за вопросы на уровне домашней работы, которые я задаю в эти дни.

В любом случае, у меня есть следующий код XAML:

<UserControl.Resources>
    <CollectionViewSource x:Key="XMLObjectGroups" Source="{Binding Path=XMLObjectList}">                              
        <CollectionViewSource.GroupDescriptions>
            <PropertyGroupDescription PropertyName="IsDateType"/>
        </CollectionViewSource.GroupDescriptions>
        <CollectionViewSource.SortDescriptions>
            <scm:SortDescription PropertyName="IsDateType" Direction="Ascending"/>
            <scm:SortDescription PropertyName="OrderNumber" Direction="Ascending"/>
        </CollectionViewSource.SortDescriptions>
    </CollectionViewSource>
<UserControl.Resources>
...
    <ListView 
          DataContext="{StaticResource XMLObjectGroups}"
          ItemContainerStyle="{StaticResource XMLItemStyle}"
          ItemsSource="{Binding}"
          SelectedItem="{Binding Path=SelectedOrder}">

Во второй строке XMLObjectList - это свойство только для чтения класса ViewModel, возвращающее Collections.ObjectModel.ReadOnlyObservableCollection(Of MyOrder).

В последней строке SelectedOrder - это свойство того же класса ViewModel, которое позволяет устанавливать и получать объект MyOrder.

Я подтвердил, что на XMLObjectList правильно ссылаются, переименовав свойство, неправильно набрав строку, точки останова и т. Д. XMLObjectList определенно ссылается на свойство XMLObjectList этого конкретного класса ViewModel.

Однако свойство SelectedOrder никогда не вызывается во время выполнения, что означает, что оно неправильно подключено к SelectedItem этого ListView.

Что касается моего прочтения по этой теме, и, насколько я получил ответы на аналогичный вопрос вчера, мой код должен работать, но это не так. Что я тут не так делаю?

1 Ответ

2 голосов
/ 07 октября 2010

Попробуйте изменить его на следующее:

<ListView  
      ItemContainerStyle="{StaticResource XMLItemStyle}" 
      ItemsSource="{Binding Source={StaticResource XMLObjectGroups}}" 
      SelectedItem="{Binding Path=SelectedOrder}"> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...