C# 动态绑定-基于列解析属性名称

C# 动态绑定-基于列解析属性名称,c#,wpf,mvvm,data-binding,C#,Wpf,Mvvm,Data Binding,我有ListView,在同一列中有不同的单元格(通过使用DataTemplateSelector实现)。下面是一个非常简单的示例: <ListView ItemsSource="{Binding Items}"> <ListView.Resources> <l:ResultsSelector x:Key="result1"> <l:ResultsSelector.TemplateResult>

我有
ListView
,在同一列中有不同的单元格(通过使用
DataTemplateSelector
实现)。下面是一个非常简单的示例:

<ListView ItemsSource="{Binding Items}">
    <ListView.Resources>
        <l:ResultsSelector x:Key="result1">
            <l:ResultsSelector.TemplateResult>
                <DataTemplate>
                    <TextBlock Text="{Binding Result1}"/> <!-- how to make this dynamic? -->
                </DataTemplate>
            </l:ResultsSelector.TemplateResult>
           ...
       </l:ResultsSelector>
   ...
   </ListView.Resources>
   <ListView.View>
       <GridView>
           <GridViewColumn Header="Result1" CellTemplateSelector="{StaticResource result1}"/>
           <!-- would be nice to use same selector for all columns -->
           <GridViewColumn Header="Result2" CellTemplateSelector="{StaticResource result2}"/>
           <GridViewColumn Header="Result3" CellTemplateSelector="{StaticResource result3}"/>
           ...
       </GridView>
   </ListView.View>
</ListView>

...
...
...
视图模型:

private ObservableCollection<Item> _items;
public ObservableCollection<Item> Items
{
    get { return _items; }
    set
    {
        _items = value;
        OnPropertyChanged();
    }
}

public class Item: NotifyPropertyChangedBase
{
    public string Result1 {get; set;}
    public string Result2 {get; set;}
    public string Result3 {get; set;}
    ...
}
private observedcollection\u项目;
公共可观测收集项目
{
获取{return\u items;}
设置
{
_项目=价值;
OnPropertyChanged();
}
}
公共类项:NotifyPropertyChangedBase
{
公共字符串Result1{get;set;}
公共字符串Result2{get;set;}
公共字符串Result3{get;set;}
...
}
问题
ResultSelector
对于所有结果列都是相同的(还有其他列),唯一的区别是绑定属性的名称:对于列“Result1”,它是
Result1
IsResult1
,等等;对于“Result2”-
Result2
,等等

Aim:我只想定义一次选择器(正如我前面所说的,这是一个非常简化的版本,所以复制/粘贴“result1”选择器定义
N
次是一个非常糟糕的选择,尤其是当我以后必须更改某些内容时),并以某种方式将其用于所有列

问题:是否有组织动态绑定的方法。在“动态”下,我指的是根据列动态解析的属性名

转换器<代码>用户控制?想法?

你想要什么

public String Name
    {
        get { return name; }
        set { name = value; OnPropertyChanged("name"); }
    }


有可能吗?这样,您至少可以生成字符串并将其作为参数添加到OnPropertyChanged中。

我想您误解了我的问题。查看选择器模板之一中的
TextBlock
。它绑定到
Result1
,这没有问题,它显示了正确的值。问题是要避免创建另一个选择器(在xaml中定义它),其中相同的
TextBlock
将绑定到例如
Result2
。啊,好吧,所以这和我发布的相反。您需要一个通用XAML{Binding Result}而不是通用代码?是的,其中
Result
值取自
Result2
属性,当它显示在“Result2”列中时。
public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
    private void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
        }
    }