1

我有一个带有 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;
}
4

2 回答 2

3

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

于 2013-09-14T18:20:22.643 回答
2

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

更新:

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

sightingTypesPicker.SelectionChanged += sightingTypesPicker_SelectionChanged;
于 2013-09-14T16:16:08.050 回答