Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Intercettare cambio proprietà di una classe bindata a datagrid

7 views
Skip to first unread message

Al3xI98O

unread,
Feb 17, 2012, 7:35:48 AM2/17/12
to
Ciao a tutti,
ci provo... :)

Ho un problema credo banale ma non riesco a trovare una soluzione :
( Anche avendo fatto parecchie ricerche in rete ma magri mi sono perso
io! Più che problema direi mia mancanza su un concetto credo...

Credo sia facile da spiegare quindi elenco i punti salienti della
situazione (siamo in WPF con binding, senza MVVM quindi con il codice
del code behind che funge da ViewModel):
1. [~ViewModel] ho la mia classe windows (nel .xaml.cs) che ha una
ObservableCollection<PersonaggiCartoniAnimati>
ElencoPersonaggiCartoniAnimati
2. [~View] nel .xaml ho una DataGrid bindata a ElencoPersonaggi con
AutogenerateColumn a false. Ho quindi specificiato le colonne col
binding.
[Binding DataGrid --> ItemsSource="{Binding Path=ElencoPersonaggi,
Mode=TwoWay}"
Binding Column --> Binding="{Binding Path=IsDisney, Mode=TwoWay}"]

Fin qui tutto ok avendo gestito "INotifyPropertyChanged". Adesso ho la
necessità di interagire con il "click" della colonna IsDisney per fare
dei controlli sulle altre colonne (diciamo che posso avere solo 1
personaggio Disney...).
Come fare? Se implemento "INotifyPropertyChanged" in
PersonaggiCartoniAnimati intercetto la cosa ma NON nella classe in cui
gestisco la view (in pratica non nel ViewModel)

Se avete domande o non sono stato chiaro fatemi sapere!
Grazie!

Al3x

Al3xI98O

unread,
Feb 17, 2012, 7:37:01 AM2/17/12
to
On 17 Feb, 13:35, Al3xI98O <bon...@gmail.com> wrote:

Dimenticavo:
ambiente WPF 4 con C# (ma poco importa direi...) :)

Al3x

Mauro Servienti [MVP]

unread,
Feb 18, 2012, 4:17:48 AM2/18/12
to
Ciao Al3xI98O,

You wrote on 17/02/2012 :
> Credo sia facile da spiegare quindi elenco i punti salienti della
> situazione (siamo in WPF con binding, senza MVVM quindi con il codice
> del code behind che funge da ViewModel):
> 1. [~ViewModel] ho la mia classe windows (nel .xaml.cs) che ha una
> ObservableCollection<PersonaggiCartoniAnimati>
> ElencoPersonaggiCartoniAnimati
> 2. [~View] nel .xaml ho una DataGrid bindata a ElencoPersonaggi con
> AutogenerateColumn a false. Ho quindi specificiato le colonne col
> binding.
> [Binding DataGrid --> ItemsSource="{Binding Path=ElencoPersonaggi,
> Mode=TwoWay}"
> Binding Column --> Binding="{Binding Path=IsDisney, Mode=TwoWay}"]
>
> Fin qui tutto ok avendo gestito "INotifyPropertyChanged". Adesso ho la
> necessità di interagire con il "click" della colonna IsDisney per fare
> dei controlli sulle altre colonne (diciamo che posso avere solo 1
> personaggio Disney...).
> Come fare? Se implemento "INotifyPropertyChanged" in
> PersonaggiCartoniAnimati intercetto la cosa ma NON nella classe in cui
> gestisco la view (in pratica non nel ViewModel)

a naso direi, non usare nella ObservableCollection un
PersonaggiCartoniAnimati ma crei un PersonaggiCartoniAnimatiViewModel
che wrappa PersonaggiCartoniAnimati

class PersonaggiCartoniAnimatiViewModel
{
public PersonaggiCartoniAnimatiViewModel( PersonaggiCartoniAnimati
source, IValidator sharedValidator )
{
sharedValidator.Register( this );
}
}

in questo modo puoi passare ad ogni singola "riga" altre cosa come un
validatore che conosce tutte le righe (Register) e quindi è in grado di
fare considerazioni sull'insieme dei dati.

> Al3x

.m

--
blog @ //milestone.topics.it


Al3xI98O

unread,
Feb 19, 2012, 12:41:35 PM2/19/12
to
On 18 Feb, 10:17, Mauro Servienti [MVP] <mauroservie...@online.nospam>
wrote:
Non mi è chiaro al 100% ma mi pare fili... domani provo :)
Intanto grazie!

al3x
0 new messages