Witam,
ja mam pytanie odnośnie używania eventow w modelu MVVM, ponieważ potrzebowałbym np eventow typu "Mouse Down" "Mouse Up", no a z tego co wiem to w modelu MVVM jest możliwość bindowania tylko kliknięć. Także pytanie jak to rozwiązać?
- Rejestracja:ponad 9 lat
- Ostatnio:prawie 9 lat
- Lokalizacja:Tychy
- Postów:45

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
Możesz sobie do Viewmodelu przekazać kontrolkę przez konstruktor. W modelu możesz utworzyć do niej publiczną referencję. To co teraz musisz zrobić to utworzyć obiekt modelu wewnątrz Viewmodelu i przypisać do publicznej referencji kontrolkę z konstruktora Viewmodelu. Tym sposobem masz kontrolkę z eventami dostępną w całym Viewmodelu :)
Pseudokod:
public class Model{
public Textbox PoleTekstowe;
}
public class Viewmodel{
private Model _model;
public Viewmodel(Textbox tb){
this._model = new Model();
this._model.PoleTekstowe = tb;
this.UstawZdarzenia();
}
private void UstawZdarzenia(){
this._model.PoleTekstowe.TextChanged+=(sender,args)=>{
// Obsługa zdarzenia.
};
}
}
// Natomiast w Code-behind robimy bindowanie datacontextu:
var vm = new Viewmodel(this.MojaKontrolka);
this.DataContext = vm;
// Wewnątrz XAML
<TextBox Name="MojaKontrolka"/>
- Rejestracja:ponad 9 lat
- Ostatnio:prawie 9 lat
- Lokalizacja:Tychy
- Postów:45
Jeśli dobrze rozumiem to coś na zasadzie, która przedstawiono tutaj? :
http://www.codeproject.com/Tips/478643/Mouse-Event-Commands-for-MVVM

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
Pewnie. Zresztą to naturalne, ponieważ TextBox ma inne eventy niż np. ComboBox etc. To co możesz zrobić żeby uzyskać uniwersalność to przekazywać przez konstruktor Viewmodelu kontrolki jako liste albo tablice obiektów klasy object
i przypisywać im zdarzenia rzutujac je później na obiekty konkretnych kontrolek. Sprawdzony sposób i działa.
Zresztą jak chcesz zrobić uniwersalny event np. MouseClicked to zamiast lambdy napisz funkcje i ja przypisz do eventa dla kontrolek, które MouseClicked obsługują. Wszystkie kontrolki masz wszak na liście z konstruktora.
- Rejestracja:ponad 9 lat
- Ostatnio:prawie 9 lat
- Lokalizacja:Tychy
- Postów:45
W sumie, jak tak sie zastanowić to ta uniwersalność nie jest mi potrzebna tak jak mi się wydawało, więc wielkie dzięki za nakierowanie ;)

- Rejestracja:ponad 11 lat
- Ostatnio:ponad 4 lata
- Postów:2442
Niestety nie mam tego teraz jak sprawdzić ale najpewniej będzie to obsługa zdarzenia MouseDown
dla klasy Image
. Może to też Ci jakoś pomoże http://stackoverflow.com/questions/3539144/wpf-check-mouse-movement-and-cursor-position-within-mouseleftbuttondown-handler
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
grzesiek51114