我想從中獲取選定的專案ListView。我的看法是:
<ListView Name="StudentGrid" Grid.Row="1" Margin="1,1,1,1" ItemsSource="{Binding studentList}" SelectedItem="{Binding selectedItem}">
視圖模型是:
public ObservableCollection<Student> selectedItem { get; set; }
private void DeleteStudent()
{
ObservableCollection<Student> item = selectedItem;
if(selectedItem != null)
{
int a = item.Count;
}
}
我想獲取所選專案的索引。我怎樣才能做到這一點?
uj5u.com熱心網友回復:
是系結集合中的SelectedItem一個物件,所以它是型別Student而ObservableCollection<Student>不像串列本身。此外,如果您希望屬性被雙向系結,這意味著您還可以更改視圖模型中的索引并且ListView將相應地更新所選索引,您必須實作INotifyPropertyChanged.
public class YourViewModel : INotifyPropertyChanged
{
private Student _selectedItem;
// ...other code.
public Student SelectedItem
{
get => _selectedItem;
set
{
if (_selectedItem == value)
return;
_selectedItem = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
要獲取索引,請將屬性系結到視圖模型SelectedIndex中的型別屬性。int
private int _selectedIndex;
public int SelectedIndex
{
get => _selectedIndex;
set
{
if (_selectedIndex == value)
return;
_selectedIndex = value;
OnPropertyChanged();
}
}
<ListView Name="StudentGrid" Grid.Row="1" Margin="1,1,1,1" ItemsSource="{Binding studentList}" SelectedIndex="{Binding SelectedIndex}"/>
您也可以同時系結兩者或通過串列中的索引獲取學生。
var student = studentList[SelectedIndex];
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/446085.html
上一篇:將矩形控制元件的可見性系結到按鈕的isEnabled屬性
下一篇:如何為控制元件創建基類
