2016-04-03 28 views
0

DataGrid ve bazı kayıtlar var. İstediğim, klavyede Delete tuşuna bastığımda satır silinir ve hatta koleksiyondaki kayıt silinir.Sil tuşu ile DataGrid satır silme

CanUserDeleteRows parametresinin hile yaptığını düşünmüştüm ama işe yaramıyor. Silmeye bastığımda, satır reddeder, ancak yine de koleksiyonda kalır.

Bu benim DataGrid:

<DataGrid 
    Name="ProjectsGrid" 
    ItemsSource="{Binding Path=FilesCollection}" 
    AutoGenerateColumns="False" 
    CanUserAddRows="False" 
    CanUserDeleteRows="True"> 
    <DataGrid.Columns> 
     <DataGridCheckBoxColumn Header="Use" Binding="{Binding Include}"/> 
     <DataGridTextColumn Header="Name" Binding="{Binding Path, Converter={StaticResource PathConverter}}"/> 
    </DataGrid.Columns> 
</DataGrid> 

Bu benim ViewModel geçerli:

namespace Validator.ViewModels 
{ 
    class SettingsVm : INotifyPropertyChanged 
    { 
    public void ChangeProperty(string propertyName) 
    { 
     if (this.PropertyChanged != null) 
     { 
      this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 
    public event PropertyChangedEventHandler PropertyChanged; 

    public ObservableCollection<CsprojFile> FilesCollection { get; set;} 
    public SettingsVM() 
    { 
     FilesCollection = new ObservableCollection<CsprojFile>(); 
    } 
} 

benim ViewModel bazı etkinlik eklemek gerekir mi? Yoksa farkında olmadığım başka bir yol var mı?

Şimdiden teşekkürler.

+0

Do sorunu çözmek gerekir

<DataGrid Name="ProjectsGrid" ItemsSource="{Binding Path=FilesCollection, Mode=TwoWay}" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="True"> <DataGrid.Columns> <DataGridCheckBoxColumn Header="Use" Binding="{Binding Include}"/> <DataGridTextColumn Header="Name" Binding="{Binding Path}"/> </DataGrid.Columns> </DataGrid> 

sahip/ICommand '[bazıları uygulamayı kullanır (https://msdn.microsoft.com/en-us/library/system.windows.input.icommand (v = vs.110) .aspx) arabirimi? Belki bazı 'RelayCommand'? – dkozl

+0

Evet Kendi uygulamam var. Ne öneriyorsun? Uygulamamı görmeniz için buraya yüklemem gerekir mi? –

+0

Gerek yok. Sadece eşyaların koleksiyonunda neden kaldığını merak ediyorum. Benim durumumda olduğu gibi çıkarılmalıdır. Koleksiyonunuz silme işlemine izin vermezse 'CanUserDeleteRows' seçeneği göz ardı edilir. [MSDN] 'dan (https://msdn.microsoft.com/en-us/library/system.windows.controls.datagrid.canuserdeleterows (v = vs.110) .aspx): _ ** Satır silme, öğeyi kaldırır Satır ItemsSource ** 'dan temsil eder. ItemsSource silme işlemlerine izin vermiyorsa, kullanıcı bu özellik true olarak ayarlanmış olsa bile satırları silemez. – dkozl

cevap

0

Eğer toplama o zaman sen ItemSource için bağlayıcı modu belirtmeliyim Görünüm güncellenebilen isterseniz: Bu

+0

İki şekilde de çalışması gerekir. Tüm koleksiyonu değiştirmiyorsunuz ancak bir öğeyi kaldırıyorsunuz. Aslında görüşten kaybolan öğe, olduğu gibi çalışması gerektiğini ileri sürecektir. – dkozl