0

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

这是我的编码部分。

<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>

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

4

2 回答 2

1

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

<ListBox ItemsSource="{Binding Items}" ... />

...然后是:

a)在填充之前实例化您的数据收集:

Items = new ObservableCollection<YourDataType>();
foreach (YourDataType data in GetDataFromDatabase())
{
    Items.Add(data);
}

b) 每次显式设置属性:

Items = GetDataFromDatabase();

c)在添加之前清除集合属性:

Items.Clear();
foreach (YourDataType data in GetDataFromDatabase())
{
    Items.Add(data);
}
于 2013-09-18T11:30:53.573 回答
1

我猜你在某个事件处理程序上填充列表框,比如 on Activated

在这种情况下,您应该ListBox在添加项目之前清除 。

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

    // ...
    // populate LocationList here, as before
    // ...
}
于 2013-09-18T11:26:16.277 回答