6

WPF アプリケーション ウィンドウにデータ グリッドがあり、データは監視可能なコレクションにバインドされています。DataGrid でプロパティを設定CanUserDeleteRows=Trueし、キーボードの [削除] ボタンを押して行を削除できます。

これは私にはあまり直感的ではないようです。行を削除する必要がある押したときに削除ボタンを持つ追加の列を保持したい。(ASP.NET の ItemTemplate でできることのようなもの)

<DataGrid x:Name="dgrQuestions" AutoGenerateColumns="False" Height="224" HorizontalAlignment="Left" Margin="42,73,0,0" VerticalAlignment="Top" Width="663" ItemsSource="{Binding QueList}" CanUserAddRows="True" CanUserDeleteRows="True">
            <DataGrid.Columns>                
                <DataGridTextColumn Header="Qu" Binding="{Binding Path=Que, UpdateSourceTrigger=PropertyChanged}"/>
                <DataGridTextColumn Header="An" Binding="{Binding Path=Ans, UpdateSourceTrigger=PropertyChanged}"/>
                <DataGridTextColumn Header="Hi" Binding="{Binding Path=Hi, UpdateSourceTrigger=PropertyChanged}"/>

            </DataGrid.Columns>

buttonデータグリッド自体の内部を使用して行を削除するこの機能を取得する方法

4

2 に答える 2

19

DataGridTemplateColumnコマンドを呼び出すボタンを含むを追加できますDelete。DataGrid は Delete コマンドを処理し、行を削除します。

<DataGridTemplateColumn Header="Actions" IsReadOnly="True">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Content="Remove Row" Command="Delete"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
于 2012-08-01T12:42:01.063 に答える
3

DataGridTemplateColumn をグリッドに追加する必要があります。何かのようなもの

<DataGrid x:Name="dgrQuestions" AutoGenerateColumns="False" Height="224" HorizontalAlignment="Left" Margin="42,73,0,0" VerticalAlignment="Top" Width="663" ItemsSource="{Binding QueList}" CanUserAddRows="True" CanUserDeleteRows="True">
            <DataGrid.Columns>                
           <DataGridTemplateColumn Header="Delete" Width="75">                 
                <DataGridTemplateColumn.CellTemplate>                     
                    <DataTemplate>                         
                        <Button Content="Delete" Tag="{Binding}" Click="OnDelete"/>                     
                    </DataTemplate>                 
                </DataGridTemplateColumn.CellTemplate>             
            </DataGridTemplateColumn>  
                <DataGridTextColumn Header="Qu" Binding="{Binding Path=Que, UpdateSourceTrigger=PropertyChanged}"/>
                <DataGridTextColumn Header="An" Binding="{Binding Path=Ans, UpdateSourceTrigger=PropertyChanged}"/>
                <DataGridTextColumn Header="Hi" Binding="{Binding Path=Hi, UpdateSourceTrigger=PropertyChanged}"/>

            </DataGrid.Columns>

次に、ボタンを任意の ID またはアイテム {Binding} にバインドすると、コード ビハインド (OnDelete) でイベントを処理するか、ボタンをコマンドに直接バインドできますが、SelecteItem を ViewModel にバインドして処理する必要があります。実行されたコマンド:

SelectedItem="{Binding SelectedItem, Mode=TwoWay}"
于 2012-08-01T12:45:53.247 に答える