将Listview绑定到与类同名的属性

时间:2016-01-18 22:35:38

标签: c# wpf data-binding

所以我有一个类Question,其属性@QuestionAnswer是一个字符串,我想将它绑定到Listview,以便当我说

lv.ItemsSource = AllQuestions; //lv being the listview and AllQuestions being a List<Quesiton>

和XAML

<ListView x:Name="lv" HorizontalAlignment="Left" Height="310" Margin="0,10,0,0" VerticalAlignment="Top" Width="225" SelectionChanged="lv_SelectionChanged">
<ListView.View>
    <GridView>
        <GridViewColumn Header="Questions" Width="225" DisplayMemberBinding="{Binding Question}"/>
    </GridView>
</ListView.View>

它显示@Question属性。例如,如果我有

AllQuestions.Add(new Question { Quesiton = "why", Answer = 'a'});
lv.ItemsSource = AllQuestions;

列表视图会显示why,但它只显示空格。我注意到,当我将DisplayMemberBinding="{Binding Question}"更改为DisplayMemberBinding="{Binding Answer}"时,它会正确显示a

如果它有帮助,我的问题类的代码是:

public class Question
{
    public string @Question { get; set; }
    public char Answer { get; set; }
}

总而言之,我想知道的是如何显示@Question属性以及为什么当DisplayMemberBinding="{Binding Question}"显示空白

Example

1 个答案:

答案 0 :(得分:1)

根据MSDN,您不能拥有与该类同名的类成员。

  

类或结构的成员不能与类或结构具有相同的名称,除非该成员是构造函数。

     

如果您无意中在构造函数上放置了返回类型,可能会导致错误CS0542,这实际上使其成为普通方法。

您需要重命名您的课程或属性,并且不要忘记相应地更改xaml文件。