绑定到 DataGrid 中的 DataTemplate

Binding to DataTemplate within DataGrid

我正在尝试使用 XAML 中绑定到 ObservableCollection 的 DataGrid。使用绑定到 ObservableCollection 中每个项目的各个列的 DataGridTextColumns,我可以毫不费力地显示简单文本,但我也想在网格中显示图像。因此,我已经开始使用 DataGridTemplateColumn,但我似乎无法获得正确的绑定逻辑。我已将其简化为在继续放入图像之前尝试使用它显示文本。

下面是我的代码的简化版本:

<DataGrid x:Name="DataGrid" Width="Auto" MinWidth="600" AutoGenerateColumns="False"
            SelectionMode="Single"
            ItemsSource="{Binding Collection, Mode=OneWay}" CanUserReorderColumns="True" CanUserSortColumns="True">
    <DataGrid.Columns>
        <DataGridTextColumn x:Name="ID" Header="ID" Binding="{Binding ID, Mode=OneWay}"/>
        <DataGridTemplateColumn x:Name="Number" Header="Number">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding DataContext.Number}" DataContext="{Binding Collection, RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

当我专门使用它时,我遇到了很多错误,如下所示:

System.Windows.Data Error: 40 : BindingExpression path error: 'Collection' property not found on 'object' ''DataGrid' (Name='DataGrid')'. BindingExpression:Path=Collection; DataItem='DataGrid' (Name='DataGrid'); target element is 'TextBlock' (Name=''); target property is 'DataContext' (type 'Object')

我已经尝试以我能想到的所有方式对此进行调整 - 以各种不同的方式更改我的文本绑定或 DataContext 绑定的语法 - 但我只是不断收到上述错误,否则它只会显示为空白而不显示任何文本。我试过的另一种方法不起作用,例如:

<TextBlock Text="{Binding Number}" DataContext="{Binding DataContext.Collection, RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}}"/>

我只是想弄清楚如何在网格中显示像文本这样简单的内容,这样我就可以继续使用该逻辑处理其他内容。我似乎找不到解决我的具体问题的任何信息。

我确定它很简单,我只是不理解 XAML 中的逻辑,所以任何意见或建议将不胜感激。

TextBlock DataContext 已经设置为集合中的项目,因此您可以直接绑定到项目的 属性。

<TextBlock Text="{Binding Number}"/>