टेक्स्टबॉक्स डेटाग्रिड WPF में कंट्रोलटेम्प्लेट का उपयोग करने और एक साथ बाइंडिंग करते समय त्रुटि


नमस्ते, मेरे पास डेटाग्रिड है। मैंने इसके सेल्स में टेक्स्टबॉक्स का उपयोग किया।
मैंने इसके लिए एक कंट्रोल टेम्पलेट बनाया।
इसलिए मेरी समस्या यह है कि जब मैं कंट्रोल टेम्पलेट का उपयोग करता हूं, तो टेक्स्टबॉक्स की बाइंडिंग काम नहीं करेगी। लेकिन अगर मैं सब कुछ सीधे डेटाटेम्पलेट में सेट कर दूं, तो बाइंडिंग सही काम करती है।
कृपया कोई विचार?

मैंने क्या प्रयास किया है:

टेक्स्टबॉक्स से बाइंडिंग इस कोड में सही काम करती है:

एक्सएमएल
<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>

टेक्स्टबॉक्स से बाइंडिंग इस कोड में काम नहीं करती!!! :

एक्सएमएल
<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

मुझे उत्तर मिल गया.
मुझे टेक्स्ट को पैरेंट से बाइंड करना चाहिए, फिर क्लास से बाइंड करना चाहिए।

एक्सएमएल
<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>

एक्सएमएल
<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をコピーしました