C# 如何从listview获取selecteditems属性

C# 如何从listview获取selecteditems属性,c#,wpf,listview,C#,Wpf,Listview,我已经创建了一个列表视图,其中的项目按不同类别进行排序。我试图让listview的selectedItem进入我的Viewmodel中的一个属性,我遵循了常规方法,只需设置selectedItem属性的绑定 然而,由于我现在实际上只是将datacontext设置为我的可观察集合,而没有触及ItemsSource属性(或者我是吗?),我相信我缺少了一些花哨的xaml代码来使SelectedItem的绑定工作。希望有人遇到类似的问题。 xaml代码和viewmodel中声明的两个属性如下所示 模

我已经创建了一个列表视图,其中的项目按不同类别进行排序。我试图让listview的selectedItem进入我的Viewmodel中的一个属性,我遵循了常规方法,只需设置selectedItem属性的绑定

然而,由于我现在实际上只是将datacontext设置为我的可观察集合,而没有触及ItemsSource属性(或者我是吗?),我相信我缺少了一些花哨的xaml代码来使SelectedItem的绑定工作。希望有人遇到类似的问题。 xaml代码和viewmodel中声明的两个属性如下所示


模型“SelectedTileChange”声明如下:

    public TileChange SelectedTileChange
    {
        get;
        set;
    }

    //Class contains an Observable Collection of the TileChange class (same class as SelectedItem is binding to)
    //E.g. ObservableCollection<TileChange> tileChangeListEntries;
    public TileChangeList TileChangeList
    {
        get;
        set;
    }
public TileChange选择的文件更改
{
得到;
设置
}
//类包含TileChange类的可观察集合(与SelectedItem绑定到的类相同)
//例如,可观察到的采集数据;
公共TILECHANGLEST TILECHANGLEST
{
得到;
设置
}

假设usercontrol的datacontext设置为包含
SelectedTileChange
属性的viewmodel,您可以像这样绑定到
SelectedItem
属性:

SelectedItem="{Binding DataContext.SelectedTileChange, 
              RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
这将找到usercontrol,并绑定到其datacontext上的
SelectedTileChange
属性

但通常您只需将
ListView
直接绑定到
CollectionViewSource
,而不是设置其数据上下文。这样,您就不需要创建这种
相对资源
绑定:

<ListView ItemsSource="{Binding Source={StaticResource TileChangeType}}"
          SelectedItem="{Binding SelectedTileChange}" />


回答得很好!你刚刚一次解决了两个问题!除了元素之外,我从未使用相对源绑定过任何东西,因为我没有使用前缀DataContext,(必须改为设置整个元素datacontext)。现在这一切都成功了!顺便说一句,请给出一个“将listview直接绑定到collectionviewsource”的示例“@ETG87很高兴听到它起作用了。我添加了一些代码来演示如何直接绑定到collectionviewsource。