【解決方法】celleditingtemplate で編集できません


DataGridTemplateColumn を持つ DataGrid があります。 コメントフィールドを編集できません。 コメントフィールドをダブルクリックすると、背景が期待通りに変わります。 LightSalmon バインドされたプロパティの内容 Comment と表示されますが、内容を編集できません。

私が試したこと:

<DataGridTemplateColumn IsReadOnly="False" Header="Comment" MinWidth="80">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock
              Background="LightGray"
                Margin="5"
                MinHeight="35"
                TextAlignment="Center"
                Text="{Binding Comment, Mode=OneWay}"
                IsEnabled="True"
                />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBlock
              Background="LightSalmon"
                Opacity="0.5"
                Margin="5"
                MinHeight="35"
                TextAlignment="Center"
                Text="{Binding Comment}"
                IsEnabled="True"
                />
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>

解決策 1

ジェリーは、詳しく説明すると、解決策を提供しました –

TextBlock は読み取り専用コントロールであるため、ダブルクリックしてもコンテンツを編集できません。 MS ラーニング | テキストブロッククラス[^]

編集を使用するには、「CellEditingTemplate」の「TextBox」などの編集可能なコントロールを使用する必要があります。

XAML
<DataGridTemplateColumn IsReadOnly="False" Header="Comment" MinWidth="80">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock
                Background="LightGray"
                Margin="5"
                MinHeight="35"
                TextAlignment="Center"
                Text="{Binding Comment, Mode=OneWay}"
                IsEnabled="True"
            />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBox
                Background="LightSalmon"
                Margin="5"
                MinHeight="35"
                TextAlignment="Center"
                Text="{Binding Comment, UpdateSourceTrigger=PropertyChanged}"
                IsEnabled="True"
            />
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

「CellEditingTemplate」の「TextBox」はユーザー入力を可能にし、「UpdateSourceTrigger=PropertyChanged」はユーザーが入力するとソース プロパティが更新されるようにします。

コメント

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