簡體   English   中英

不能在 wpf 數據網格中出現 select 多行

[英]Cannot select multiple row in wpf data grid

我有一個數據網格,我的目的是在選中行的復選框單元格時 select 多行。 問題是總是選擇一行。 如果 i select 一行,則之前檢查的行的 IsSelected 屬性返回 false。 請檢查后面的代碼。 當檢查任何行的復選框時,我將“已符合”屬性設置為True。 下一次檢查其他行刪除以前的選擇。 我不知道原因。

Xaml

<DataGrid VirtualizingStackPanel.VirtualizationMode="Standard"  EnableColumnVirtualization = "True" EnableRowVirtualization ="True" x:Name="deckGrid" Grid.Row="3" ItemsSource="{Binding DeckList}" AutoGenerateColumns="False" 
            SelectionMode="Extended" Margin="10,10,0,0" SelectionUnit="FullRow" SelectionChanged="deckGrid_SelectionChanged">

 <DataGrid.Columns >
                <DataGridTemplateColumn Width="70" >
                    <DataGridTemplateColumn.HeaderTemplate >
                        <DataTemplate>
                            <CheckBox  Name="ckbSelectedAll" IsThreeState="True" Margin="10,0,0,0"  IsChecked="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=local:DeckDefinition}, Path=AllSelected}">
                                <i:Interaction.Triggers>
                                    <i:EventTrigger EventName="Unchecked">
                                        <i:InvokeCommandAction Command="{x:Static local:DeckDefinition.UnCheckedCommand}"/>
                                    </i:EventTrigger>
                                    <i:EventTrigger EventName="Checked">
                                        <i:InvokeCommandAction Command="{x:Static local:DeckDefinition.CheckedCommand}"/>
                                    </i:EventTrigger>
                                </i:Interaction.Triggers>
                            </CheckBox>
                        </DataTemplate>
                    </DataGridTemplateColumn.HeaderTemplate>
                    <DataGridTemplateColumn.CellTemplate >
                        <DataTemplate>
                            <CheckBox IsChecked="{Binding IsChecked, UpdateSourceTrigger=PropertyChanged}"  Name="cbkSelect" Margin="10,0,0,0"  Checked="CheckedTest"/>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTextColumn Header="{lex:LocText Key=name, Dict=general, Assembly=KillCardMain}" Binding="{Binding Path=Name}" ></DataGridTextColumn>
                <DataGridTemplateColumn HeaderStyle="{StaticResource CollapsedHeaderStyle}" CellStyle="{StaticResource NoBackgroundCellStyle}">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button Width="32" Style="{DynamicResource NoBackgroundButtonStyle}" Click="DeleteRowBtnClicked">
                                <Image Source="/KillCardMain;component/Resources/Images/delete.png" Width="16"></Image>
                            </Button>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
                <DataGridTemplateColumn HeaderStyle="{StaticResource CollapsedHeaderStyle}" CellStyle="{StaticResource NoBackgroundCellStyle}">
                    <DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button Width="32" Style="{DynamicResource NoBackgroundButtonStyle}">
                                <Image Source="/KillCardMain;component/Resources/Images/edit.png" Width="16"></Image>
                            </Button>
                        </DataTemplate>
                    </DataGridTemplateColumn.CellTemplate>
                </DataGridTemplateColumn>
            </DataGrid.Columns>
        </DataGrid>

背后的代碼

private void CheckedTest(object sender, RoutedEventArgs e) {
    int index = deckGrid.SelectedIndex;
    DataGridRow row = (DataGridRow)deckGrid.ItemContainerGenerator.ContainerFromIndex(index);
    row.IsSelected = true;

        }

在此處輸入圖像描述

DataGrid 的標准選擇功能是 select 只要單擊一行,就只選擇新行,除非按下 Ctrl 或 Shift。 聽起來您希望僅通過是否選中這些復選框來控制選擇過程,但是您將不得不以某種方式禁用 DataGrid 的所有正常選擇行為。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM