我在向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,其他的不会出现。 那么有谁知道问题在哪里?
答案 0 :(得分:2)
您需要将records
声明为ObservableCollection
。将其一次性分配给列表框的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() });
}