productColumn2 的绑定适用于两种方式。当我为每个添加转换器时,productColumn1 称为转换器;但在从可观察集合加载时始终将其值设置为 null,或在分配时将值设置为产品(但实际上并未分配可观察集合)。
问题与 DataContext 和 LogicalTree 有关。ProductSelectorTextBoxUserControl 的 DataContext 是它本身,并用于它自己的代码。我希望能够将其“文本”属性绑定到我的可观察集合,如在 productColumn2 中。到目前为止,我似乎无法将 ProductSelectorTextBoxUserControl DataContext 设置为此处使用的 DataContext。
<DataGrid ItemsSource="{Binding Path=ObservableCollectionItems, Mode=OneWay}" AutoGenerateColumns="False" EnableRowVirtualization="True" >
<DataGrid.Columns>
<DataGridTemplateColumn x:Name="productColumn1" SortMemberPath="Product" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<productSelector:ProductSelectorTextBoxUserControl Text="{Binding Path=Product, Mode=TwoWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=LostFocus, ValidatesOnExceptions=True}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn x:Name="productColumn2" Binding="{Binding Path=Product, Mode=TwoWay, NotifyOnSourceUpdated=True}" />
</DataGrid.Columns>