我正在 Windows 手机上开发应用程序。在视图中,我有带有 ListBox 的网格:
<Grid x:Name="ContentGrid"
Grid.Row="1">
<ListBox x:Name="TestListbox"
ItemsSource="{Binding History}"
Margin="24,0"
SelectionChanged="GoToSelection"
ItemTemplate="{StaticResource HistoryDataTemplate}"
>
</ListBox>
</Grid>
历史是 ObservableCollection。
HistoryDataTemplate 看起来像:
<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Key="HistoryDataTemplate">
<Grid>
<HistoryControls:HistoryItem d:LayoutOverrides="Width" Margin="0,0,0,24"/>
</Grid>
</DataTemplate>
</phone:PhoneApplicationPage.Resources>
我使用 HistoryItem 的构造函数来订阅 PropertyChanged 事件:
public HistoryItem()
{
InitializeComponent();
base.Loaded+=(new RoutedEventHandler(this.HistoryControl_Loaded));
}
private void HistoryControl_Loaded(object sender, RoutedEventArgs e)
{
this._dataContext.PropertyChanged += new PropertyChangedEventHandler(this._dataContext_PropertyChanged);
}
当我有 1-8 个项目时,所有工作都正确,但对于 >8 个项目,构造函数仅被调用 8 次。