0

辞書から値を受け取るDataGridがあります。

public class Files
        {
            public string File { get; set; }
            public string Duration { get; set; }
            public string Status { get; set; }           
        }

        Dictionary<Files, string> files = new Dictionary<Files, string>(); 
        DataGrid.ItemsSource = files.Keys;

値は次のようにプログラムで追加されます。

private void AddFilesList(string addsrc, string addduration, string addstatus, string path)
        {
            files.Add(new Files
            {
                File = addsrc,
                Duration = addduration,
                Status = addstatus,

            }, path
               );
            DataGrid.Items.Refresh();  
        }

今、私は右クリック/削除をDataGridに追加しようとしています。これにより、選択した値がディクショナリから削除されます。

MVVMパターンを使用して、値自体を削除します。XAMLは次のとおりです。

 <Grid>
    <Grid DataContext="{Binding Source={StaticResource EmpVM}}">
        <DataGrid AutoGenerateColumns="False" Height="287" 
              HorizontalAlignment="Left" Margin="23,12,0,0" 
              Name="DataGrid" VerticalAlignment="Top" Width="657" 
              SelectedIndex="{Binding Path=RecordIndex,Mode=TwoWay}">
            <DataGrid.ContextMenu>
                <ContextMenu>
                    <MenuItem Command="{Binding DeleteCommand}" 
        CommandParameter="{Binding RecordIndex}"  Header="Delete"/>
                </ContextMenu>
            </DataGrid.ContextMenu>
        </DataGrid>
    </Grid>

ここで問題となるのは、「Selectedindex」が選択された値のインデックスを反映し、Dictionary<>にインデックスがないことです。これにより、インデックスの後に選択したアイテムを削除できません。クラスをディクショナリにロードする必要があるため、OrderedDictionaryも使用できません。

選択したアイテムを辞書から削除するためにXAMLをバインドする方法について誰か提案はありますか?

4

0 に答える 0