7

私の ObservableCollection には 3 つのアイテムがあり、行は一貫してデータグリッドに表示されます。DataGrid の 1 つのセルを編集モードにできません。クリック、クリック-クリック、ダブルクリック、F2 などを試しましたが、行全体が選択されたままです。ユーザーにデータグリッドを編集させるにはどうすればよいですか。他の投稿で同様のデータグリッドの編集に関する質問を見つけましたが、誰も私の問題を解決しませんでした。これがコードです(WPF NetFramework 4.5)。意図的に、最初の列のみが編集不可 (読み取り専用) です。

<DataGrid Name="myDataGrid" Grid.Row="2" AutoGenerateColumns="False" ItemsSource="{Binding}" IsReadOnly="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="name" IsReadOnly="True" Width="200"  >
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="Formulation" Width="100" IsReadOnly="False">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FormulationStr}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FormulationStr}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="volume Diff" Width="100" IsReadOnly="False">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding volumeDiff}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding volumeDiff}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>
4

1 に答える 1

11

に配置TextBlockcell templateましたcell editing templateTextBlockそのため、F2キーを押してセルをダブルクリックしても、編集できないセルが常に何であっても、変化に気付くことはありません。

TextBoxこのようにあなたの中に置かれますCellEditingTemplate-

<DataGridTemplateColumn Header="Formulation" Width="100" IsReadOnly="False">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding FormulationStr}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBox Text="{Binding FormulationStr}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

または、上記のコードで達成しようとしていることを内部的にサポートするDataGridTextColumn代わりに使用するだけです-DataGridTemplateColumn

<DataGridTextColumn Header="Formulation" Width="100" IsReadOnly="False" Binding="{Binding FormulationStr}" />
于 2012-11-14T20:11:10.080 に答える