Error al usar la plantilla de control y vincular en el cuadro de texto WPF de cuadrícula de datos

programación


Hola tengo un DataGrid. Usé TextBox en sus celdas.
Hice un ControlTemplate para ello.
Entonces, mi problema es que cuando uso controlTemplate, el enlace de TextBox no funciona. Pero si configuro todo directamente en DataTemplate, el enlace funciona perfecto.
¿Alguna idea por favor?

Lo que he probado:

El enlace a TextBox funciona perfecto en este código:

XML
<DataGridTemplateColumn Header="Text" IsReadOnly="False" Width="38*">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBox 
                Text="{Binding Path=TheText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                Background="Transparent"
                Foreground="White"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

¡La vinculación a TextBox no funciona en este código! :

XML
<DataGridTemplateColumn Header="Text" IsReadOnly="False" Width="38*">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBox 
                Text="{Binding Path=TheText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
                Template="{DynamicResource TextBoxOfCellsInDataGridOfSubtitle}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

Solución 1

Encontré la respuesta.
Debería vincular el Texto al padre y luego vincularlo a la Clase.

XML
<DataGridTemplateColumn Header="Text" IsReadOnly="False" Width="38*">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBox 
                Text="{Binding Path=TheText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
                Template="{DynamicResource TextBoxOfCellsInDataGridOfSubtitle}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

XML
<ControlTemplate x:Key="TextBoxOfCellsInDataGridOfSubtitle" TargetType="TextBox">
    <TextBox Text="{TemplateBinding Text}"
             AcceptsReturn="False" 
             CaretBrush="White" 
             Foreground="White"
             Background="Transparent"
             BorderBrush="Transparent"
             BorderThickness="0"
             TextAlignment="Center"
             HorizontalAlignment="Stretch"
             HorizontalContentAlignment="Stretch"
             VerticalAlignment="Stretch"
             VerticalContentAlignment="Center"/>
</ControlTemplate>

コメント

タイトルとURLをコピーしました