没有DataContext绑定,ItemsControl不显示

我有一个窗口,其中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的第一个地方。

wxyxxlh 回答:没有DataContext绑定,ItemsControl不显示

我经常发生这种情况。我的猜测是,当SelectedItem为null时,您将获得由控件吃掉的null引用异常。

如果将DataContext={Binding SelectedItem}ScrollViewer移到ItemsControl,它应该可以工作。

本文链接:https://www.f2er.com/2946334.html

大家都在问