1

我在向 ItemsControl 添加项目时遇到问题。这是我的 XAML 页面:

<ScrollViewer  Grid.Row="4">
    <ItemsControl Name="items">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                    <StackPanel Name="ContentControl">
                        <Canvas Name="canvas1" Height="60" VerticalAlignment="Top">
                            <TextBlock Text="{Binding RecordedTime}" Canvas.Left="10" Canvas.Top="7" Width="370"  FontSize="36"/>
                            <Controls:RoundButton Name="save" Canvas.Left="380" Height="58" Canvas.Top="6" />
                        </Canvas>
                    </StackPanel>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</ScrollViewer>

在我后面的代码中,我里面有一个事件。

records.Add(new item { Item = date.Now.ToString() });

        items.ItemsSource = records; 

所有变量都已定义。

问题是多次触发事件时,只有第一次被添加到ItemsControl中,其他的都没有出现。那么有谁知道问题出在哪里?

4

1 回答 1

2

您需要声明recordsObservableCollection. 将它一劳永逸地分配给ItemsSource列表框的属性,然后仅使用您的集合。例如,在调用InitializeComponents方法之后,您可以在页面的构造函数中执行此操作:

public ObservableCollection<item> Records { get; set; }

// Constructor
public Page3()
{
    InitializeComponent();

    this.Records = new ObservableCollection<item>();

    this.items.ItemsSource = this.Records;
}

public void AddItem()
{
    // Thanks to the ObservableCollection,
    // the listbox is notified that you're adding a new item to the source collection,
    // and will automatically refresh its contents
    this.Records.Add(new item { Item = DateTime.Now.ToString() });
}
于 2013-07-02T06:00:22.280 回答