SelectedItem绑定将值设置为集合EmployeeCollection中的类型。因此,假设EmployeeCollection是
我有一个弹出的ListView,以这种方式声明:
<ListView x:Name="ShowFileLV"
ItemsSource="{Binding EmployeeCollection}"
DataContext="{Binding}"
SelectedItem="{Binding Path=SelectedEmployee}"
SelectionMode="Single">
<ListView.View>
<GridView>
<GridViewColumn Width="140"
DisplayMemberBinding="{Binding Name}">
<GridViewColumnHeader Click="SortClick"
Tag="Name"
Content="Name" />
</GridViewColumn>
<GridViewColumn Width="140"
DisplayMemberBinding="{Binding ID}">
<GridViewColumnHeader Click="SortClick"
Tag="ID"
Content="ID" />
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
列表和排序都很好。我的问题是,我想在选择一行时直接更新SelectedEmployee(不确定ListViewItem是否是正确的选择),或者更好的是,只获取ID或名称:
public ListViewItem SelectedEmployee
{
get
{
return _selectedEmployee;
}
set
{
_selectedEmployee= value;
}
}
这一直有效,直到我使用了一个加载了字符串列表的ListBox(而不是ListView),每个字符串都包含Name和ID,就像这个一样
<ListBox Name="ShowFileLV"
SelectionMode="Single"
SelectedValue="{Binding Path=Employee}"
Style="{StaticResource ListBoxStyle}" ItemsSource="{Binding Path=ListPopupItems}" >
</ListBox>
使用公共字符串,如:
public String Employee
{
get
{
return _employee;
}
set
{
_employee= value;
OnPropertyChanged("Employee");
}
}
当我选择一行时,它会自动设置公共字符串Employee,而不需要代码。我如何使用ListView和Collections完成他的操作?
ObservableCollection<Employee>
,您需要将SelectedEmployee从ListViewItem更改为Employees。此外,请确保您使用的是INotifyPropertyChanged接口。
public Employee SelectedEmployee
{
get
{
return _selectedEmployee;
}
set
{
_selectedEmployee= value;
RaisePropertyChanged("SelectedEmployee");
}
}
如果只需要名称或ID,请使用SelectedValue和SelectedValuePath而不是SelectedItem。
<ListView x:Name="ShowFileLV"
ItemsSource="{Binding EmployeeCollection}"
DataContext="{Binding}"
SelectedValue="{Binding Path=SelectedEmployee}"
SelectedValuePath="Name"
SelectionMode="Single">
public string SelectedEmployee
{
get { return _selectedEmployee; }
set
{
_selectedEmployee = value;
RaisePropertyChanged("SelectedEmployee");
}
}