ItemsControl在没有DataContext绑定的情况下不会显示

问题描述 投票:0回答:1

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

wpf binding datacontext itemscontrol
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.