我正在使用MVVM在ListView中显示列表数据。 ListView非常简单如下:
<ListView HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ItemsSource="{Binding Customers}">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding FirstName}">
<GridViewColumnHeader Width="100" Content="First Name" />
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding LastName}">
<GridViewColumnHeader Width="100" Content="Last Name" />
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
我将客户对象列表绑定到ListView中,当我在ListView中突出显示一个项目并开始键入T
时出现问题。每次键入T
字符时,ListView都会突出显示下一个项目。
通过花一些时间来找出问题,我追踪它是因为我的客户对象有名称空间TestMVVMProject
所以我认为客户对象的ToString()
函数总是返回{{1} }
有谁能告诉我如何制止这种行为?
答案 0 :(得分:0)
修改强> 经过一番调查后,我找到了下一个解决方案:
<ListView
TextSearch.TextPath="FirstName"
...>
希望这会有所帮助。
原始回答:
在视图模型上覆盖ToString()
,您将获得正确的行为。
public class Customer
{
public string Name { get; set; }
public override string ToString()
{
return this.Name;
}
}
答案 1 :(得分:0)
这是因为默认情况下ListView实现了文本搜索功能。您可以通过在列表框上使用IsTextSearchEnabled属性来阻止此行为。试试
<ListView HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ItemsSource="{Binding Customers}"
IsTextSearchEnabled="False">
这应该在您不需要时禁用文本搜索。