Я пытаюсь изучить шаблон MVVM с помощью Silverlight.Есть тонны видео и блогов.Я понимаю это на высоком уровне, но, похоже, я не могу получить свою собственную реализацию.
Я получил следующее представление:
<UserControl x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:vm="clr-namespace:SilverlightApplication1.ViewModel"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<TextBlock Text="{Binding Name, Mode=TwoWay}" Width="200" Height="200"/>
<Button Name="btn1" Width="200" Height="20" Margin="100,268,100,12" Click="btn1_Click"/>
</Grid> </UserControl>
В моей виртуальной машине у меня есть: пространство имен SilverlightApplication1.ViewModel
{
public class ViewModel : INotifyPropertyChanged
{
private Model.UserModel m_model;
public ViewModel()
{
m_model = new Model.UserModel();
}
public string Name
{
get
{
return m_model.Name;
}
set
{
if (value != m_model.Name)
{
m_model.Name = value;
InvokePropertyChanged("Name");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void InvokePropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}
и в моей модели:
namespace SilverlightApplication1.Model
{
public class UserModel
{
public string Name { get; set; }
}
}
По сути, я хочу смоделировать нажатие кнопки и обновить свойство, чтобы оно могло инициировать событие изменения свойства.Я пытался жестко запрограммировать свойство в коде MainPage, например:
private void btn1_Click(object sender, RoutedEventArgs e)
{
ViewModel.ViewModel vm = new ViewModel.ViewModel();
vm.Name = "Test";
}
Разве это не должно обновлять свойство (для имени) и вызывать событие changeloaded?Я видел другие примеры, делающие что-то похожее на это.Я не понимаю, что подписывается на событие
Может ли кто-нибудь светить?