0

複数選択のWPFデータグリッドがあり(モデルのプロパティはIsSelected ...)、正常に機能しますが、プログラムを開始するときに、最初にテーブルをクリックする必要があります。その後、複数選択が機能します。最初にテーブルをクリックすると、カーソルの下の項目が選択されます(Shiftキーを押すと、項目も選択されますが、複数選択は行われません)。

datagridがフォーカスされていないことが原因である可能性がありますが、ロードされたウィンドウでdatagrid.Focus()を実行すると、どちらも機能しません。私は何をすべきか?

WPF DataGridコード:

<DataGrid x:Name="datagrid" AutoGenerateColumns="False" Height="Auto" VerticalAlignment="Stretch" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="4" Margin="3"
          CanUserAddRows="False" CanUserDeleteRows="False" 
          ItemsSource="{Binding Path=Items}" SelectedItem="{Binding Path=SelectedItem}" IsSynchronizedWithCurrentItem="True"
          SelectedIndex="{Binding Path=SelectedIndex}" SelectionMode="Extended" SelectionUnit="FullRow" EnableColumnVirtualization="False" EnableRowVirtualization="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="{Binding CodebookUnitsUnitTable, Source={StaticResource Texts}}" Binding="{Binding Path=Unit}" Width="*" IsReadOnly="True"/>
        <DataGridTextColumn Header="{Binding CodebookUnitsDescriptionTable, Source={StaticResource Texts}}" Binding="{Binding Path=Description}" Width="5*" IsReadOnly="True"/>
    </DataGrid.Columns>
    <DataGrid.CommandBindings>
        <CommandBinding Command="SelectAll" Executed="CommandBinding_Executed"/>
    </DataGrid.CommandBindings>
    <DataGrid.ContextMenu>
        <ContextMenu>
            <MenuItem Header="{Binding CodebookContextMenuNewItem, Source={StaticResource Texts}}" Command="{Binding NewItemCommand}">
                <MenuItem.Icon>
                    <myComponents:AutoGreyableImage Height="20" Margin="0,-1,0,0" Width="20" Source="../Icons/Small/INovySM.gif" Stretch="None" RenderOptions.BitmapScalingMode="NearestNeighbor" RenderOptions.EdgeMode="Aliased"/>
                </MenuItem.Icon>
            </MenuItem>
        </ContextMenu>
    </DataGrid.ContextMenu>
    <DataGrid.InputBindings>
        <KeyBinding Command="{Binding DeleteCommand}" Key="Delete"/>
    </DataGrid.InputBindings>
</DataGrid>
4

2 に答える 2

0

SelectedItemグリッド全体に1つの選択されたアイテムが設定されるため、バインディングを削除する必要があります。

スタイリングを使用して、各データアイテムのプロパティにバインドできIsSelectedます(各アイテムのビューモデルにIsSelectedプロパティがあると仮定します-MVVM)。

<DataGrid.Resources>
   <Style TargetType="DataGridRow">
      <Setter Property="IsSelected" Value="{Binding IsSelected}" />
   </Style>
</DataGrid.Resources>
于 2012-06-28T13:43:10.837 に答える
0

ソリューションは、DataGridだけでなく、最初の行に焦点を合わせて設定されています。

于 2012-08-14T21:25:37.117 に答える