Witam, ucze się dopiero programowania w tym module ale utknalem przy bindowaniu, po prostu nie umiem sobie z tym poradzić, szukałem troche na internecie ale nic takiego co mogło by mi pomoc nie znalazłem. I taka prośba do was czy mogłby ktos podac jakies madre źródło, gdzie jest to jako tako wytlumaczone bo nigdzie nie potrafilem znaleŹĆ dobrze opisanego przykladu z czyms takim
- Rejestracja:ponad 9 lat
- Ostatnio:ponad 8 lat
- Lokalizacja:Tychy
- Postów:45
Chodzi po prostu o zbinowanie przyciskow, np wczytanie czegos do pictureboxa po wcisnieciu klawisza, albo np znalezienie linii na obrazie po wcisnieciu przycisku. Same funkcje ktore to robia mam, tylko nie wiem jak to obindowac zeby nie pisac tego w code-behind. Robilem to w winForms ale sama aplikacja troche bardziej sie rozbudowala i potrzebowalem jakiegos dobrego czytelnego modelu. No i tm czyms jest to mvvm z tym ze własnie nie potrafie sobie poradzic z tym bindowaniem...


- Rejestracja:ponad 10 lat
- Ostatnio:7 miesięcy
- Postów:194
http://code-forge.pl/2013/03/24/kurs-mvvm-helloword-w-mvvm-czesc-2/ Przepisz cały przykład. Pobaw się i zobacz co z tego wyjdzie.
- Rejestracja:ponad 9 lat
- Ostatnio:ponad 8 lat
- Lokalizacja:Tychy
- Postów:45
Tak to mniej wiecej wygląda, no i chodzi o to aby funkcje wczytywania obrazu z Klasy LoadImage w folderze Commands zbindowac z przyciskiem wczytaj.
- ExpoFinder.rar (123 KB) - ściągnięć: 100

- Rejestracja:prawie 12 lat
- Ostatnio:około 6 lat
- Postów:231
O interfejsie ICommand słyszałeś?
implementujesz interfejs ICommand:
public class ActionCommand : ICommand
{
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
private Action methodToExecute;
private Func<bool> canExecuteEvaluator;
public ActionCommand(Action methodToExecute, Func<bool> canExecuteEvaluator)
{
this.methodToExecute = methodToExecute;
this.canExecuteEvaluator = canExecuteEvaluator;
}
public ActionCommand(Action methodToExecute)
: this(methodToExecute, null)
{
}
public bool CanExecute(object parameter)
{
if (canExecuteEvaluator == null)
{
return true;
}
else
{
bool result = canExecuteEvaluator.Invoke();
return result;
}
}
public void Execute(object parameter)
{
methodToExecute.Invoke();
}
}
w ExpositionDetailsViewModel:
//gdzies w kodzie
public ActionCommand LoadCommand { get; private set; }
//w konstruktorze
LoadCommand = new ActionCommand(LoadImage);
//gdzies w kodzie
private void LoadImage()
{
//tu wylądujesz po naciśnięciu Wczytaj w menu
}
i w widoku podłączasz się tak jak wcześniej Ci pisałem w komentarzu poprzez Command
<MenuItem Header="_Wczytaj" Command="{Binding LoadCommand}" />
- Rejestracja:ponad 9 lat
- Ostatnio:ponad 8 lat
- Lokalizacja:Tychy
- Postów:45
Wiesz co pokombinowałem i wszystko działa cała funkcja po kliknieciu sie odpala z tym że po wybraniu obrazu nie wyświetla sie on na tym pictureboxie :/
Tak wygląda funkcja wczytujaca obraz:
private Image Expo = new Image();
public void LoadImage()
{
//tu wylądujesz po naciśnięciu Wczytaj w menu
OpenFileDialog op = new OpenFileDialog();
op.Title = "Select a picture";
op.Filter = "All supported graphics|*.jpg;*.jpeg;*.png|" +
"JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" +
"Portable Network Graphic (*.png)|*.png";
if (op.ShowDialog() == true)
{
Expo.Source = new BitmapImage(new Uri(op.FileName));
}
}
Tak wyglada kod w ExpositionDetailsViewModel a kontrolka wiaomo nazywa sie Expo, no tylko mowie nic sie na moim pictureboxie nie zmienia

- Rejestracja:prawie 12 lat
- Ostatnio:około 6 lat
- Postów:231
Czemu Expo nie jest właściwością (property)? Zrób z Expo property i binduj ją do widoku.

- Rejestracja:prawie 12 lat
- Ostatnio:około 6 lat
- Postów:231
weź się za jakiś kurs mvvm a nie pytaj o takie podstawy bo to wskazuje tylko i wyłącznie na Twoje lenistwo.
private Image _Expo;
public Image Expo
{
get { return _Expo; }
set
{
if (value != _Expo)
{
_Expo = value;
OnPropertChanged("Expo");
}
}
}
kod pisany z palca wiec może być jakaś literówka etc