【发布时间】:2016-07-28 02:01:57
【问题描述】:
所以我无法在点击事件中取回正确的 SelectedIndex。无论我选择什么项目,我总是返回-1
这是我的活动:
private void Delete_Click(object sender, RoutedEventArgs e)
{
var index = CitiesDisplay.SelectedIndex;
if(CitiesDisplay.SelectedIndex >= 0)
{
vm.Cities.Remove(vm.Cities[index]);
}
}
这是我的 ListView :
<ListView Name="CitiesDisplay" ItemsSource="{Binding}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical" Holding="ListViewItem_Holding">
<!-- Begin Flyout menu -->
<FlyoutBase.AttachedFlyout>
<MenuFlyout>
<MenuFlyoutItem Text="Delete" Click="Delete_Click"/>
<MenuFlyoutItem Text="Navigate To" Click="NavigateTo_Click"/>
</MenuFlyout>
</FlyoutBase.AttachedFlyout>
<!-- End Flyout Menu -->
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Vertical">
<TextBlock Name="CityName" Text="{Binding Name}" FontSize="20"></TextBlock>
<TextBlock Name="MaxTemp" Text="{Binding max}"/>
<TextBlock Name="MinTemp" Text="{Binding min}"/>
<TextBlock Name="CurrentTemp" Text="{Binding temp}"/>
</StackPanel>
<Image Name="Logo" Width="50" Height="50" Source="{Binding icon}" HorizontalAlignment="Right" Margin="5"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我真的不明白为什么我无法获得我的 SelectedIndex,因为我在之前的项目中做了同样的事情,而且它运行得非常完美。
我也尝试过操纵 SelectedItems 无济于事。
一些额外的细节:我正在使用 Visual Studio 2015 Update 1 开发一个 Windows Phone 8.1 应用程序 (winrt)。
【问题讨论】:
-
出于好奇,如果您调试到您的 CitiesDisplay 对象,它的集合中是否有任何内容?
-
@CathalMF 在调试到 CitiesDisplay 时,我确实有 Items 集合,其中包含我的项目(并且它们无论如何都会显示)。
-
您是否将代码中的列表视图与 CitiesDisplay.ItemsSource = MyItems; 之类的东西绑定在一起?也许当您更改显示时,项目源正在重置所有内容。
-
是的,我这样绑定它:CitiesDisplay.DataContext = vm.Cities(其中 vm 是我的 ViewModel)
-
你在哪里设置你的 DataContext?
标签: c# windows xaml windows-phone-8