繁体   English   中英

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

[英]Clearing Data in ListBox and Reload in Visual Studio 2012 C# XAML

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

这是我的编码部分。

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

当我加载到该特定页面时,我怎么能清除数据?

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

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

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

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

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

<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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM