我有一个窗口,其中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,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" BorderBrush="{x:Static systemcolors.activeBorderBrush}">
<ItemsControl ItemsSource="{Binding RevHistory}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBox BorderThickness="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的第一个地方。