2010-06-11 5 views
2

J'ai un DataGrid dont itemsSource est lié à un multiconvertisseur qui utilise un convertisseur.MVVM Propriété pour la source d'éléments datagrid

<toolkit:DataGrid AutoGenerateColumns="False"> 
     <toolkit:DataGrid.ItemsSource> 
      <MultiBinding Converter="{StaticResource ProfileConverter}"> 
       <Binding ElementName="ComboBoxProfiles" Path="SelectedValue" /> 
       <Binding ElementName="DatePickerTargetDate" Path="SelectedDate" />     
      </MultiBinding> 
     </toolkit:DataGrid.ItemsSource> 

Ce qui est bon parce que le ItemsSource de la grille est mis à jour chaque fois que le combobox ou datepicker change de valeur. Le problème que j'ai maintenant est que dans mon ViewModel je veux pouvoir accéder au ItemSource de mon DataGrid et enlever des articles pour la liste ou en ajouter de nouveaux.

Comment puis-je avoir accès à la source d'items quand je l'ai configuré comme ça?

Merci beaucoup.

Répondre

4

Que diriez-vous d'avoir trois propriétés dans le ViewModel:

public DateTime? SelectedDate 
{ 
    get{return _selectedDate;} 
    set 
    { 
     _selectedDate = value; 
     UpdateItemsSource(); 
     OnPropertyChanged("SelectedDate"); 
    } 
} 
public object SelectedComboBoxValue 
{ 
    get{return _selectedComboBoxValue;} 
    set 
    { 
     _selectedComboBoxValue= value; 
     UpdateItemsSource(); 
     OnPropertyChanged("SelectedComboBoxValue"); 
    } 
} 
private void UpdateItemsSource() 
{ 
    _itemsSource = //Some fancy expression based on the two fields. 
    OnPropertyChanged("ItemsSource"); 
} 
public IEnumerable ItemsSource 
{ 
    get{return _itemsSource;} 
} 

se lient ensuite le datepicker, et combobox DataGrid aux valeurs respectives.

Espérons que cela aide.

+0

Merci beaucoup. C'est le genre de chose dont j'avais besoin. Fonctionne bien. –

Questions connexes