porządku, to jest w pewnym stopniu związane z tym pytanie: WPF Printing multiple pages from a single View ModelMVVM + UserControl + Zależność własności
starałem się przestrzegać zaleceń podanych tam, ale teraz jestem zablokowany.
Moja aplikacja korzysta z MainView.xaml i odpowiedniego MainViewViewModel.cs, używam MVVM Light w tle.
Teraz - zgodnie ze stanowiskiem - wydaje się, muszę wykonać następujące czynności:
- Tworzenie formantu użytkownika
- Expose pewne właściwości z kontrolą użytkownika
- Upewnij model widok pokazuje te właściwości
Pomysł jest jasny, ale utknąłem, próbując się nawzajem powiadomić.
Moja kontrola użytkownika (UcTest.xaml) uwidacznia zależność obiekt:
public string SpecialText
{
get { return (string)GetValue(SpecialTextProperty); }
set
{
SetValue(SpecialTextProperty, value);
}
}
// Using a DependencyProperty as the backing store for SpecialText. This enables animation, styling, binding, etc...
public static readonly DependencyProperty SpecialTextProperty =
DependencyProperty.Register("SpecialText", typeof(string), typeof(UcTest), new PropertyMetadata(new PropertyChangedCallback(SpecialTextChangedPropertyCallback)));
private static void SpecialTextChangedPropertyCallback(DependencyObject sender, DependencyPropertyChangedEventArgs e)
{
// Do something
Debug.WriteLine("Ffgdgf");
}
porządku, więc ja teraz mam kontrolę użytkownika, który ma pewne właściwości zależności. Jednak te właściwości są całkowicie oddzielone od moich właściwości ViewModel (są to te, które powinny być wyświetlane).
Więc w zasadzie mam dwie możliwości:
- Jak mogę teraz powiedzieć mój ViewModel do UserControl, że niektóre właściwości uległy zmianie?
- Czy istnieje możliwość zapomnienia o właściwościach zależności i bezpośredniego dostępu do modelu widoku?
Informacje dodatkowe # 1: mam uploaded (prosty) przykład tego, co staram się zrobić tutaj: Example Project. Chciałbym zmienić wartość etykiety w UserControl1 (poprzez właściwość binding w ViewModel dla UserControl1) z mojego MainViewViewModel.
Użyj powiązania danych –
To oznaczałoby, że mój UserControl musiałby zaimplementować INotifyPropertyChanged, co jest w zasadzie to, co powinien zrobić mój ViewModel. –