为什么这段代码没有将SelectedItem绑定到属性?

时间:2010-10-07 09:33:29

标签: .net wpf vb.net xaml

我对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对象。

我已经确认通过重命名属性,错误输入字符串,断点等来正确引用XMLObjectListXMLObjectList肯定会引用此特定ViewModel类的XMLObjectList属性。< / p>

但是,SelectedOrder属性永远不会在运行时访问,这意味着它没有正确连接到此ListView的SelectedItem。

就我对该主题的阅读而言,就我昨天得到的类似问题的答案而言,我所拥有的代码应该是有效的,但事实并非如此。我在做什么错了,在这里?

1 个答案:

答案 0 :(得分:2)

尝试将其更改为以下内容:

<ListView  
      ItemContainerStyle="{StaticResource XMLItemStyle}" 
      ItemsSource="{Binding Source={StaticResource XMLObjectGroups}}" 
      SelectedItem="{Binding Path=SelectedOrder}">