WP8 ListPicker SelectionChanged在开始时被解雇

时间:2013-09-14 16:08:02

标签: c# windows-phone-8 listpicker

我有一个带有SelectionChanged事件的ListPicker。我希望SelectionChange事件只在我更改选择时触发,显然,但在我的情况下,每当我加载页面时它也会触发。

代码:

<toolkit:ListPicker x:Name="sightingTypesPicker" ItemsSource="{Binding sightingTypes, ElementName=this}" SelectionChanged="sightingTypesPicker_SelectionChanged">
   <toolkit:ListPicker.ItemTemplate>
      <DataTemplate>
         <StackPanel>
            <TextBlock Text="{Binding Name}" FontSize="{StaticResource PhoneFontSizeSmall}"/>
         </StackPanel>
      </DataTemplate>
   </toolkit:ListPicker.ItemTemplate>
   <toolkit:ListPicker.FullModeItemTemplate>
      <DataTemplate>
         <StackPanel>
            <TextBlock Text="{Binding Name}" FontSize="{StaticResource PhoneFontSizeLarge}"/>
            <TextBlock Visibility="Collapsed" Text="{Binding TypeId}" FontSize="{StaticResource PhoneFontSizeSmall}"/>
         </StackPanel>
      </DataTemplate>
   </toolkit:ListPicker.FullModeItemTemplate>
</toolkit:ListPicker>

C#:

private void sightingTypesPicker_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    SightingType selecteditem = e.AddedItems[0] as SightingType;
    Sighting.Instance.TypeId = selecteditem.TypeID;
}

2 个答案:

答案 0 :(得分:3)

基本上通过defaut列表选择器或列表框或组合框或任何下拉列表都有一个特定的选定项目,这是listbox./ ..等的第0项。所以当页面加载和数据是被填充到列表框中,否则它会从-1触发选择更改,即没有dat状态到0选择更改为默认值:)

答案 1 :(得分:2)

您可以在代码中的Loaded事件处理程序中添加处理程序,以确保仅在此之后调用它。

<强>更新

例如,在页面的Loaded事件中添加此代码而不是XAML:

sightingTypesPicker.SelectionChanged += sightingTypesPicker_SelectionChanged;