我有一个窗口,其中DataContext设置为我的视图模型的实例。我的视图模型具有自定义类的属性“ SelectedFile”。该自定义类具有类型为ObservableCollection的属性'RevHistory',其中Revision是具有一些字符串属性的自定义类。 RevHistory初始化为固定大小。我的窗口中有一个包含ItemsControl的部件,如下所示(删除了多余的内容)
<Window>
<Grid Grid.IsSharedSizeScope="True">
...
<Border Grid.Column="1" Grid.Row="3" Grid.RowSpan="3" BorderBrush="{x:Static SystemColors.ControlDarkBrush}" BorderThickness="2" Margin="0,0,5,5" CornerRadius="3">
<Grid>
...
<ScrollViewer DataContext="{Binding SelectedFile, Mode=TwoWay}" Grid.Row="1" Margin="5" HorizontalAlignment="Stretch" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Auto" VerticalAlignment="Top">
<Grid>
...
<Border Grid.Row="1" Grid.Column="0" BorderThickness="1,0,0,0" BorderBrush="{x:Static SystemColors.ActiveBorderBrush}">
<ItemsControl ItemsSource="{Binding RevHistory}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox BorderThickness="0,0,0,1" Text="{Binding Rev}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" TextAlignment="Center" Padding="2"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
...
</Grid>
</ScrollViewer>
...
</Grid>
</Border>
</Grid>
我无法理解的原因是为什么它仅在ScrollViewer进行DataContext绑定时才起作用。 ScrollViewer是否会阻止进一步的DataContext继承?使用ItemsControl ItemSource = {Binding SelectedFile.RevHistory}时,不会显示任何项目。从ItemsControl到可视树上,ScrollViewer是绑定DataContext的第一个起作用的地方。