清除列表框中的数据并在Visual Studio 2012 C#XAML中重新加载

清除列表框中的数据并在Visual Studio 2012 C#XAML中重新加载,c#,wpf,xaml,visual-studio-2012,listbox,C#,Wpf,Xaml,Visual Studio 2012,Listbox,我创建了一个列表框并在列表中插入项目。但是,一旦我回到同一页 同样,将不会清除和重新加载数据。它将直接加载数据。这会导致数据出现两次 这是我的编码部分 <ListBox x:Name="LocationList" HorizontalContentAlignment="Center" ItemContainerStyle="{StaticResource ListBoxItemStretchContentStyle}"

我创建了一个列表框并在列表中插入项目。但是,一旦我回到同一页 同样,将不会清除和重新加载数据。它将直接加载数据。这会导致数据出现两次

这是我的编码部分

<ListBox x:Name="LocationList"
                 HorizontalContentAlignment="Center"
                 ItemContainerStyle="{StaticResource ListBoxItemStretchContentStyle}"
                 Visibility="{Binding CurrentState,
                                      Converter={StaticResource StateToNormalVisibilityConverter}}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <StackPanel Grid.Column="0">
                            <TextBlock x:Name="PurchaseName" Text="{Binding Name}" Style="{StaticResource LongListSelectorGroupHeaderLetterTileStyle}"/>
                            <TextBlock x:Name="Description" Text="{Binding Description}" Style="{StaticResource PhoneTextSubtleStyle}"/>
                        </StackPanel>
                        <Grid Grid.Column="1">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition/>
                                <ColumnDefinition/>
                            </Grid.ColumnDefinitions>
                            <TextBlock x:Name="Price"
                                                   Text="{Binding Price}"
                                                   Visibility="{Binding Purchased,
                                                                        Converter={StaticResource PurchasedBoolToVisibilityConverter}}"
                                                   VerticalAlignment="Center"/>
                            <Button Grid.Column="1"
                                                VerticalAlignment="Center"
                                                Content="Buy"
                                                Visibility="{Binding Purchased,
                                                                     Converter={StaticResource PurchasedBoolToVisibilityConverter}}"
                                                Click="Buy_Location"/>
                        </Grid>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

当我加载到特定页面时,如何清除数据

我猜您在某些事件处理程序上填充了列表框,例如在
已激活的

在这种情况下,您只需在添加项目之前清除
列表框

void MainWindow_OnActivated(object sender, EventArgs e)
{
    LocationList.Items.Clear();

    // ...
    // populate LocationList here, as before
    // ...
}

您可以通过绑定到数据集合来修复此错误…:

<ListBox ItemsSource="{Binding Items}" ... />
c) 在添加到集合属性之前清除集合属性:

Items.Clear();
foreach (YourDataType data in GetDataFromDatabase())
{
    Items.Add(data);
}
Items = GetDataFromDatabase();
Items.Clear();
foreach (YourDataType data in GetDataFromDatabase())
{
    Items.Add(data);
}