حدث خطأ عند استخدام قالب التحكم والربط معًا في مربع النص datagrid WPF

[ad_1]

مرحبا لدي DataGrid. لقد استخدمت TextBox في خلاياه.
لقد قمت بإنشاء ControlTemplate لذلك.
لذا فإن مشكلتي هي عندما أستخدم controlTemplate، فإن Binding of TextBox لن يعمل. ولكن إذا قمت بتعيين كل شيء مباشرة في DataTemplate، فإن Binding يعمل بشكل مثالي.
أي فكرة من فضلك؟

ما حاولت:

يعمل الربط بـ TextBox بشكل مثالي في هذا الكود:

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>

الربط بـ TextBox لا يعمل في هذا الكود !!! :

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>

الحل 1

لقد وجدت الجواب.
يجب أن أقوم بربط النص بالوالد، ثم ربطه بالفصل.

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>

[ad_2]

コメント

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