WPF:如何替换用于在DataGridTextColumn中编辑的Datagrid的文本框

WPF:如何替换用于在DataGridTextColumn中编辑的Datagrid的文本框,wpf,datagrid,textbox,datagridtemplatecolumn,Wpf,Datagrid,Textbox,Datagridtemplatecolumn,对于以下问题,我还没有找到一个合适的解决方案:当我在WPF/NetCore中编辑DataGrid的某些列时,我想使用一个定制的文本框或控件来执行各种操作,例如警告重复项、显示类似项或事件防止重复项完成等 <DataGrid ItemsSource="{Binding lessonEntries}" AutoGenerateColumns="False" Grid.Column="0" Grid.Row="0" Margin="10" CanUserAddRows="True" CanUse

对于以下问题,我还没有找到一个合适的解决方案:当我在WPF/NetCore中编辑DataGrid的某些列时,我想使用一个定制的文本框或控件来执行各种操作,例如警告重复项、显示类似项或事件防止重复项完成等

<DataGrid ItemsSource="{Binding lessonEntries}" AutoGenerateColumns="False" Grid.Column="0" Grid.Row="0" Margin="10" CanUserAddRows="True" CanUserDeleteRows="True" CanUserReorderColumns="False" CanUserSortColumns="True">

 <DataGrid.Columns>
        <DataGridTextColumn Header="{x:Static res:Strings.wndMainColNative}"    Binding="{Binding Native.Text}"  Width="*" />
        <DataGridTextColumn Header="{x:Static res:Strings.wndMainColForeign}"   Binding="{Binding Foreign.Text}" Width="*" />

        <!-- TEST -->
        <DataGridTemplateColumn Header="Test1" Width="*">
            <DataGridTemplateColumn.CellTemplate >
                <DataTemplate>
                    <TextBox Name="testBox" Text="{Binding Path=Foreign.Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ></TextBox>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

        <DataGridTextColumn Header="{x:Static res:Strings.wndMainColLvlSpeak}"  Binding="{Binding LevelSpeak.Level}"     IsReadOnly="False" />
        <DataGridTextColumn Header="{x:Static res:Strings.wndMainColWrite}"     Binding="{Binding LevelWrite.Level}"     IsReadOnly="False" />
        <DataGridTextColumn Header="{x:Static res:Strings.wndMainColListen}"    Binding="{Binding LevelListen.Level}"    IsReadOnly="False" />
    </DataGrid.Columns>

</DataGrid>
<DataGridTemplateColumn Header="Test1" Width="*">
    <DataGridTemplateColumn.CellTemplate >
        <DataTemplate>
            <TextBlock Name="testBox" Text="{Binding Path=Foreign.Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <StackPanel >
                <ComboBox SelectedItem="{Binding Path=Foreign.Text}"/>
            </StackPanel>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

您可以对其使用
DataGridTemplateColumn.CellEditingTemplate

<DataGridTemplateColumn Header="Test1" Width="*">
    <DataGridTemplateColumn.CellTemplate >
        <DataTemplate>
            <TextBlock Name="testBox" Text="{Binding Path=Foreign.Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <StackPanel >
                <ComboBox SelectedItem="{Binding Path=Foreign.Text}"/>
            </StackPanel>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn >
    <DataGridTemplateColumn Header="Test1" Width="*">
        <DataGridTemplateColumn.CellTemplate >
            <DataTemplate>
                <TextBox Name="testBox" Text="{Binding Path=Foreign.Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" ></TextBox>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <StackPanel >
                <ComboBox ItemsSource="{StaticResource YourListOfWords}" SelectedItem="{Binding Path=Foreign.Text}"/>
            </StackPanel>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

太棒了!我错过了使用
CellTemplate
CellEditingTemplate
。。。非常感谢。