監視可能なコレクションにバインドされたデータ グリッドがあります。データ グリッドでいくつかの行を選択してボタンをクリックすると、それらの行がコレクションから削除されます。
私のやり方で試してみると、「<strong>コレクションが変更されました。列挙操作が実行されない可能性があります。」
コレクションを変更してループしているため、エラーが発生していることはわかっています。調査を行い、見つかったものを適用しようとしましたが、動作するようです。
コレクションを作成して Datagrid にバインドする方法
ObservableCollection<XbmcInfo> SelectedShowSeason = new ObservableCollection<XbmcInfo>();
ToCopy.DataContext = SelectedShowSeason;
コレクションから値を削除する方法
private void Button_Click_1(object sender, RoutedEventArgs e)
{
var x = ToCopy.SelectedItems;
foreach (XbmcInfo f in x)
{
string ShowName = f.ShowName;
string ShowSeasonNumber = f.Number;
var Selected = SelectedShowSeason.FirstOrDefault(u => u.ShowName == ShowName && u.Number == ShowSeasonNumber);
SelectedShowSeason.Remove(Selected);
}
}
これはデータグリッドの XML です
<DataGrid Name="ToCopy" AutoGenerateColumns="False" ItemsSource="{Binding}" Margin="0,0,0,51" Grid.Row="2" Grid.ColumnSpan="3" IsReadOnly="True" CanUserResizeRows="False" CanUserReorderColumns ="False" IsSynchronizedWithCurrentItem="True">
<DataGrid.Columns>
<DataGridTextColumn Header="ShowName" Width="*" Binding="{Binding Path=ShowName}" />
<DataGridTextColumn Header="Season" Width="50" Binding="{Binding Path=Number}" />
<DataGridTextColumn Header="Path" Width="*" Binding="{Binding Path=Path}"/>
</DataGrid.Columns>
</DataGrid>
私のクラス
public class XbmcInfo
{
public string ShowName
{
get;
set;
}
public string Number
{
get;
set;
}
public string Path
{
get;
set;
}
}