Посмотрев на MVVM-Light и приведя несколько примеров, я собрал этот простой пример.См. Ниже, я показываю одно свойство, которое я подключаю, если я изменяю текстовое поле, текстовое поле обновляется.
Мои вопросы
1) Должна ли виртуальная машина управлять повышениемсобытия изменения реквизита?Некоторые примеры (включая макросы из mvvm-light) показывают, что RaisePropertyChanged из модели, но я не видел, как viewmodel должен был подписаться на уведомление.
В этом примере показано, как виртуальная машина вызывает событие
http://dotnet.dzone.com/articles/mvvm-light-whats-messenger?mz=27249-windowsphone7
показывает модель представления, вызывающую события.
2) Куда направить модель в хранилище данных?Будет ли это в модели или модели представления?
3) После чтения из магазина, как представление получает уведомление о начальных значениях?Я полагаю, что ответ на этот вопрос в большой степени зависит от ответа на вопрос 2).
Спасибо.
Модель
public string StringOne
{
get { return stringOne; }
set
{
if (stringOne == value) return;
stringOne = value;
// RaisePropertyChanged("StringOne");
}
}
Вид
<TextBlock x:Name="StringOneLabel" Text="StringOne" Margin="30,125,341,0" Height="41" VerticalAlignment="Top" />
<TextBlock x:Name="StringOne" Text="{Binding StringOne}" Margin="145,125,86,0" Height="41" VerticalAlignment="Top" />
<TextBox Height="78" Text="{Binding StringOne}" HorizontalAlignment="Left" Margin="145,258,0,0" Name="txtStringOne" VerticalAlignment="Top" Width="249" >
<Custom:Interaction.Triggers>
<Custom:EventTrigger EventName="TextChanged">
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding StringOneTextChanged}" CommandParameter="{Binding ElementName=txtStringOne}" />
</Custom:EventTrigger>
</Custom:Interaction.Triggers>
</TextBox>
ViewModel
public string StringOne
{
get { return SettingsModel.StringOne; }
set
{
var oldValue = SettingsModel.StringOne;
SettingsModel.StringOne = value;
RaisePropertyChanged("StringOne", oldValue, value, true);
}
}