[英]How do I get selecteditem from ListView in XAML?
這可能是重復的。 但是我已經嘗試了我能找到的所有方法,但我無法讓它發揮作用。
為什么這不起作用? SelectedCourse 始終為空。 我已經測試了所有其他東西,它工作正常。 它只是獲取問題所在的選定項目。
這是我的視圖模型:
public Course SelectedCourse { get; set; }
public async Task CoursesListViewClick(object sender, ItemClickEventArgs e)
{
var students = await coursesDataAccess.GetCourseStudentsAsync(SelectedCourse.CourseID); //THIS IS NULL
foreach (Student s in students)
CourseStudents.Add(s);
}
這是我的 XAML 代碼:
<ListView Grid.Column="0"
x:Name="lvCourses"
IsItemClickEnabled="True"
DataContext="{x:Bind ViewModel}"
ItemsSource="{Binding Courses, Mode=OneWay}"
SelectedItem="{Binding SelectedCourse, Mode=TwoWay}"
ItemClick="{x:Bind ViewModel.CoursesListViewClick}"
Margin="10">
<ListView.ItemTemplate>
<DataTemplate x:DataType="model:Course">
<StackPanel Height="250">
<TextBlock
FontSize="50"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{x:Bind Name}"
Style="{StaticResource TitleTextBlockStyle}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
為什么這不起作用? SelectedCourse 始終為空。
因為你已經綁定了SelectedItem屬性和ItemClick事件,所以當你點擊listViewItem時,它會先觸發與ItemClick事件綁定的CoursesListViewClick
方法,然后再觸發SelectedCourse的setter方法來設置值。 所以在 CoursesListViewClick 方法中,SelectedCourse 還沒有賦值,它始終為 null。
CoursesListViewClick 方法中的e.ClickedItem
代表您點擊的當前項目,您可以直接使用它進行操作。
public async Task CoursesListViewClick(object sender, ItemClickEventArgs e)
{
Course selectedCourse = e.ClickedItem as Course;
var students = await coursesDataAccess.GetCourseStudentsAsync(selectedCourse.CourseID); //THIS IS NULL
foreach (Student s in students)
CourseStudents.Add(s);
}
如果您使用: listView.ItemTapped += async (sender, e) => { e.Item; }
listView.ItemTapped += async (sender, e) => { e.Item; }
然后你可以操縱你要根據項目的不同ID做什么
希望這可以幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.