辞書から値を受け取る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をバインドする方法について誰か提案はありますか?