【问题标题】:Why does this code not bind SelectedItem to a property?为什么此代码不将 SelectedItem 绑定到属性?
【发布时间】:2010-10-07 09:33:28
【问题描述】:

我是 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 肯定引用了这个特定 ViewModel 类的XMLObjectList 属性。

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

就我对该主题的阅读而言,就我昨天对类似问题的回答而言,我拥有的代码应该可以工作,但事实并非如此。我做错了什么,在这里?

【问题讨论】:

    标签: .net wpf vb.net xaml


    【解决方案1】:

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

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

    【讨论】:

    • 太棒了。那行得通!你能解释一下是什么造成了不同吗?
    • 在您的原始代码中明确设置 DataContext!然后,当您绑定 SelectedItem 时,它会尝试绑定到 XMLObjectList 上的 SelectedOrder 属性(不存在)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 2012-10-12
    • 2014-12-08
    • 1970-01-01
    • 2011-06-20
    相关资源
    最近更新 更多