我使用 textName 为用户输入他的名字。然后键入,textchanged 事件使用与输入匹配的名称更新列表框,然后用户可以单击一个项目(列表框中的 CompletedName),当它发生时,我需要使用项目内容更新文本框。这个问题开始了当我为“CompletedName”更改“GivenName”(作为我查询的表中的一个字段)时发生。(它是来自查询的字符串连接,如您在上面看到的)
我有这个 LINQ 查询:
var players =
from p in context.Player
where (p.GivenName.StartsWith(TextName.Text.Trim()) || p.Number.StartsWith(TextName.Text) || p.Surname.StartsWith(TextName.Text) )
select new { CompleteName = p.GivenName + " " + p.Surname + " (" + p.Number + ")"};
然后我把它作为一个名为 listNames 的列表框的来源,我有这个文本框:
<TextBox Name="TextName" Text="{Binding ElementName=listNames, Path=SelectedItem.CompleteName}"/>
当我运行它时,显示下一个错误:“A Two Way or OneWayToSource binding cannot work on the read-only property 'CompleteName' of type '<>f__AnonymousType0`1[System.String]'”
我理解,它当然不能是 TwoWay 或 OneWayToSource。但我需要用户可以向 textName 添加内容,因为它也是一个搜索文本框,无需更新列表框上的 SelectedItem。
如果我在文本框中添加表达式 Mode=OneWay.. textName 控件中没有任何反应,我的意思是它不会显示列表框中的项目.. 我应该怎么做才能让它工作?